[mod_python] set_error_page and output buffering

Nick nick at dd.revealed.net
Tue Aug 17 11:14:39 EDT 2004


I don't know how mutable req is, but couldn't you replace write with a 
StringIO write function early in the execution?

Nick

Gregory (Grisha) Trubetskoy wrote:

> 
> Yes, but Iker's problem is that it's not that simple to use with PSP, 
> which uses req.write()...
> 
> On Tue, 17 Aug 2004, Nick wrote:
> 
>> It is simple enough to do your own buffering with a CStringIO, which 
>> is relatively fast and file-like, and then sending the resulting 
>> buffer at the end of your handler to req.write.
>>
>> Nick
>>
>> Gregory (Grisha) Trubetskoy wrote:
>>
>>>
>>> By "getting back" I meant having any access to it. Once it's written 
>>> out, the data becomes owned by the next module/filter in the filter 
>>> chain. The only way to do this would be for mod_python to do its own 
>>> buffering, which it does not.
>>>
>>> Grisha
>>>
>>> On Mon, 16 Aug 2004, Iker Arizmendi wrote:
>>>
>>>> I don't need to get it back, I just need to clear it so
>>>> I can send just the error page without any dangling output
>>>> from the faulty page. I guess one solution is to write the
>>>> output to a buffer in Python code and only call req.write
>>>> once all processing is complete. But this would eliminate
>>>> the need for PSP (unless PSP offers a way to direct it's
>>>> output to my own buffer).
>>>>
>>>> Iker
>>>>
>>>>
>>>> Gregory (Grisha) Trubetskoy wrote:
>>>>
>>>>>
>>>>> Hmm... The buffer that buffers output is controlled by Apache, and 
>>>>> AFAIK once something's been written to it, you cannot get it back.
>>>>>
>>>>> Grisha
>>>>>
>>>>> On Mon, 16 Aug 2004, Iker Arizmendi wrote:
>>>>>
>>>>>> One problem I've encountered with using set_error_page()
>>>>>> for error handling is that often the faulty page has already
>>>>>> generated some output when the error is encountered. This
>>>>>> results in garbled pages with bits from both the error-raising
>>>>>> page and the error-catching page.
>>>>>>
>>>>>> Is there some way to get around this?
>>>>>>
>>>>>> Regards,
>>>>>> Iker
>>>>>>
>>>>>>
>>>>>> Iker Arizmendi wrote:
>>>>>>
>>>>>>> Thanks Greg. Is there a method that clears the
>>>>>>> current output buffer as well?
>>>>>>>
>>>>>>> Gregory (Grisha) Trubetskoy wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Yes, by default PSP does not flush the output buffer until the 
>>>>>>>> very end which looks like what PHP ob_start func enables. If you 
>>>>>>>> want to force a flush from within PSP, you can always call 
>>>>>>>> req.flush().
>>>>>>>>
>>>>>>>> Grisha
>>>>>>>>
>>>>>>>> On Fri, 13 Aug 2004, Iker Arizmendi wrote:
>>>>>>>>
>>>>>>>>> Does the PSP handler support output buffering?
>>>>>>>>> Something along the lines of ob_start under PHP? If
>>>>>>>>> explicit support is not there, is there some other
>>>>>>>>> way to accomplish the same thing?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Iker
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>> -- 
>>>> Iker Arizmendi
>>>> AT&T Labs - Research
>>>> Speech and Image Processing Lab
>>>> e: iker at research.att.com
>>>> w: http://research.att.com
>>>>
>>>>
>>>> _______________________________________________
>>>> Mod_python mailing list
>>>> Mod_python at modpython.org
>>>> http://mailman.modpython.org/mailman/listinfo/mod_python
>>>>
>>> _______________________________________________
>>> Mod_python mailing list
>>> Mod_python at modpython.org
>>> http://mailman.modpython.org/mailman/listinfo/mod_python
>>
>>
>> _______________________________________________
>> Mod_python mailing list
>> Mod_python at modpython.org
>> http://mailman.modpython.org/mailman/listinfo/mod_python
>>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python



More information about the Mod_python mailing list