Miro
mmadecki at comcast.net
Mon Apr 3 19:52:10 EDT 2006
Hi, I’m trying to figure out how to share data between different handlers running in the same interpreter instance. I got it running with apache in debug mode (only one worker thread) but not in normal mode. According to the value of “req.interpreter” both handlers use the same interpreter. I noticed that with “PythonDebug On” according to the log message “handle” module gets reloaded with every request. Does that wipe out any global cfg!? Is there any way to make this working? I’m using following platform: - Fedora Core 4 - Apache 2.0.54 - Mod_python 3.2.8 (installed from source to replace pre-packaged 3.1.4) Complete cfg and example are attached. test_handle.py does POST to set global data that follow on GET request should read. Thanks Miro # /etc/httpd/conf.d/python.conf LoadModule python_module modules/mod_python.so Listen 8000 NameVirtualHost *:8000 <VirtualHost *:8000> SetHandler mod_python PythonPath "['/tmp/py'] + sys.path" PythonInterpreter ONE PythonAutoReload Off <Location "/get"> PythonHandler handle::get_handler </Location> <Location "/post"> PythonHandler handle::post_handler </Location> </VirtualHost> # /tmp/py/handle.py from mod_python import apache class SharedData: data = "Doesn't work" def get_handler(req): req.content_type = "text/plain" req.write(SharedData.data) apache.log_error("get_handler wrote : " + SharedData.data) apache.log_error("get_handler interpreter : %r" % req.interpreter) return apache.OK def post_handler(req): SharedData.data = req.read() apache.log_error("post_handler read : " + SharedData.data) apache.log_error("post_handler interpreter : %r" % req.interpreter) return apache.OK # /tmp/py/test_handle.py import httplib def test_get(): print "test_get" PORT = 8000 PATH = "/get" conn = httplib.HTTPConnection("127.0.0.1:%s" % PORT) conn.putrequest("GET", PATH, skip_host=1) conn.putheader("Host", "%s:%s" % ("test_get", PORT)) conn.endheaders() response = conn.getresponse() rsp = response.read() print "Got back : %s" %rsp conn.close() def test_post(): print 'test_post' params = 'It works' print " writing %d bytes..." % len(params) PORT = 8000 PATH = "/post" conn = httplib.HTTPConnection("127.0.0.1:%s" % PORT) conn.putrequest("POST", PATH, skip_host=1) conn.putheader("Host", "test_rpost:%s" % PORT) conn.putheader("Content-Length", len(params)) conn.endheaders() conn.send(params) conn.close() if __name__ == "__main__": test_post() test_get() -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.385 / Virus Database: 268.3.5/300 - Release Date: 04/03/06 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20060403/c7862eae/attachment.html
|