[mod_python] [help]please give an input filter example ?

David Fraser davidf at sjsoft.com
Thu Sep 18 18:02:34 EST 2003


camge wrote:

>----- Original Message ----- 
>From: "David Fraser" <davidf at sjsoft.com>
>To: "camge" <is83070 at cis.nctu.edu.tw>
>Cc: <mod_python at modpython.org>
>Sent: Thursday, September 18, 2003 7:05 PM
>Subject: Re: [mod_python] [help]please give an input filter example ?
>
>
>  
>
>>camge wrote:
>>
>>    
>>
>>>----- Original Message ----- 
>>>From: "David Fraser" <davidf at sjsoft.com>
>>>To: "camge" <is83070 at cis.nctu.edu.tw>
>>>Sent: Thursday, September 18, 2003 6:12 PM
>>>Subject: Re: [mod_python] [help]please give an input filter example ?
>>>
>>>
>>>
>>>
>>>      
>>>
>>>>>camge wrote:
>>>>>
>>>>>Hi ,
>>>>>
>>>>>  I have written an output filter, and it works fine.
>>>>>But I dont know how to write an input filter, there are not any
>>>>>          
>>>>>
>examples.
>  
>
>>>>>I have tried to write an simple input filter according to an output
>>>>>
>>>>>
>>>>>          
>>>>>
>>>filter.
>>>
>>>
>>>      
>>>
>>>>>But it always makes IE hang there.
>>>>>If any one can give me an example about input filter?
>>>>>Thanks a lot!
>>>>>
>>>>>My environment:
>>>>>Apache/2.0.44 (Win32)
>>>>>mod_ssl/2.0.44
>>>>>OpenSSL/0.9.7
>>>>>mod_python/3.0.3
>>>>>Python/2.2.2
>>>>>
>>>>>Best regards,
>>>>>camge
>>>>>
>>>>>
>>>>>
>>>>>          
>>>>>
>>>>Why don't you send your example input filter that makes IE hang?
>>>>
>>>>Thanks
>>>>David
>>>>
>>>>
>>>>
>>>>
>>>>        
>>>>
>>>Below is my simple input filter inputFilter.py:
>>>-------------------------------------------------------------
>>>def inputfilter(filter):
>>>   f=open('filter.log','ab')#for debug
>>>   data='start'
>>>   while data!=None:
>>>       try:
>>>           data = filter.read()
>>>           if data:
>>>               filter.write(data)
>>>               f.write(str(data))
>>>       except Exception,e:
>>>               f.write(str(e))
>>>               data=None
>>>    if data==None:
>>>       filter.close()
>>>    f.close()
>>>----------------------------------------
>>>httpd.conf:
>>>----------------------------------------
>>><Location /test/>
>>>    PythonInputFilter inputFilter MyInputFilter
>>>    SetInputFilter MyInputFilter
>>></Location>
>>>
>>>
>>>
>>>
>>>      
>>>
>>Excuse me rearranging your post, bottom posting makes discussion easier...
>>
>>I think the problem here is that you're doing filter.read() which will
>>read until an end of file, which will never happen on an input filter.
>>You probably need a more intelligent way of working out when to stop
>>reading, e.g. for HTTP, you could read a line at a time.
>>What are you wanting to use the input filter for?
>>
>>David
>>
>>
>>
>>    
>>
>Thanks for your fast response!