[Zope] RESPONSE.write - Still not working
Tino Wildenhain
tino at wildenhain.de
Wed Sep 17 13:02:59 EDT 2003
Hi Jonathan,
Jonathan Hobbs wrote:
> Thanks to those who responded with some ideas regarding my RESPONSE.write
> problem - but it's still not working!
>
> Based on the responses I now have a dtml method containing (note: I have
> tried it with and without the Transfer-Encoding header):
>
>
> <dtml-call "RESPONSE.setHeader('Transfer-Encoding', 'chunked')">
> <dtml-call "RESPONSE.setHeader('Content-Type', 'text/plain')">
> <dtml-call "RESPONSE.write('Starting\n')">
> <dtml-call "RESPONSE.flush()">
>
> <dtml-call "wait(5)">
>
> <dtml-call "RESPONSE.write('Done\n')">
> <dtml-call "RESPONSE.flush()">
>
>
>
> The 'wait' routine is still a simple external method:
>
> import time
> def wait(self, secs):
> time.sleep(secs)
> return
>
>
> What I expected to see was the word 'Started' displayed in my browser,
> followed by a 5 second delay, and then see the word 'Done' displayed.
>
> What I get is a 5 second delay and then both 'Started' and 'Done" appear at
> the same time.
>
1.) I dont think using DTML is a good idea for this, and not because
I hate DTML but because almost every tag in DTML actually produces
output - and this stands diametrical against your desire to control
output via response.write()
response.write() just switches output mode from one single response
at the end of publishing to small chunks during publishing process.
2.) With recent Zope (2.6+) you dont send Transfer encoding and stuff
because ZPublisher does this on its own when you use response.write()
response.flush() just does nothing. - if there is any caching
and buffering active it will remain.
If it does not work out just make sure you are using a current Zope
version, since things are probably broken in older.
Regards
Tino Wildenhain
More information about the Zope
mailing list