[mod_python] Problems with inpufilter & mod_proxy

indyone indyone at gmail.com
Wed Apr 11 05:08:28 EDT 2007


    Hi all,

I am trying to create a custom input filter and i'm facing some strange 
problems...

I am running:
Apache/2.0.59 (Win32)
mod_python/3.3.1
Python/2.4.3

I have this testing filter.py:

from mod_python import apache

def inputfilter(filter):
    apache.log_error('MyFilter: Requested %s' % filter.req.uri, 
apache.APLOG_NOTICE)
    filter.pass_on()
    apache.log_error('MyFilter: Exiting...', apache.APLOG_NOTICE)

The apache's conf has these:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule python_module modules/mod_python.so

PythonAutoReload On
PythonDebug On
PythonInputFilter filter MY_INPUT
SetInputFilter MY_INPUT

RewriteEngine On
RewriteRule ^/(.*) 
http://localhost:8080/VirtualHostBase/http/localhost:80/Plone/VirtualHostRoot/$1 
[L,P]

My problem is that when i'm calling the URL http://localhost the browser 
says 'Waiting for localhost' forever,
Apache is eating memory & CPU really fast, and in the error log i get 
these also forever...

[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Requested /
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Exiting...
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Requested /
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Exiting...
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Requested /
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Exiting...
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Requested /
[Wed Apr 11 11:15:18 2007] [notice] MyFilter: Exiting...
....

Only way to stop this is killing apache.
If i comment-out the rewrite from the .conf and call http://localhost i 
get the default index.html and the filter works fine.
If i add a filter.close() like this (with the rewrite on again):

def inputfilter(filter):
    apache.log_error('MyFilter: Requested %s' % filter.req.uri, 
apache.APLOG_NOTICE)
    filter.pass_on()
    filter.close()
    apache.log_error('MyFilter: Exiting...', apache.APLOG_NOTICE)

The filter works fine in GET requests and i see properly the pages from 
the backend server (which is a Zope)...
but... when i POST a form i get this in the error_log:
[Wed Apr 11 11:55:12 2007] [notice] MyFilter: Requested /login_form
[Wed Apr 11 11:55:12 2007] [notice] MyFilter: Exiting...
[Wed Apr 11 12:00:12 2007] [error] [client 127.0.0.1] proxy: error 
reading status line from remote server localhost, referer: 
http://localhost/login_form
[Wed Apr 11 12:00:12 2007] [error] [client 127.0.0.1] proxy: Error 
reading from remote server returned by /login_form, referer: 
http://localhost/login_form
[Wed Apr 11 12:00:12 2007] [notice] MyFilter: Requested /login_form
[Wed Apr 11 12:00:12 2007] [notice] MyFilter: Exiting...
[Wed Apr 11 12:00:12 2007] [notice] MyFilter: Requested /login_form
[Wed Apr 11 12:00:12 2007] [notice] MyFilter: Exiting...
and yes, the backend server is still running...

I have also tried this code with the combinations:
    Apache/2.2 (Win32) mod_python/3.3.1 Python/2.4.3
    Apache/2.2 (Win32) mod_python/3.2.1 Python/2.4.3
and got the same results...

Please give any hint u come up... Thank u in advance.

Ioannis Stavrinos


More information about the Mod_python mailing list