Both cases can be tested by using simple wsgi app [4] and apache's ab [5].
Hope it hels, regards,
[1]:
mod_wsgi (pid=2367): Exception occurred processing WSGI script
'/home/services/httpd/html/matkor.beauty.ant.vpn/pesto_wsgi_test.py'.
RuntimeError: response has not been started
[2]:
mod_wsgi (pid=2512): Exception occurred processing WSGI script
'/home/services/httpd/html/matkor.beauty.ant.vpn/pesto_wsgi_test.py'.
Traceback (most recent call last):
File "/home/services/httpd/html/matkor.beauty.ant.vpn/pesto/core.py", line
99, in next
self._content_iter = response(self.environ, self.start_response)
File "/home/services/httpd/html/matkor.beauty.ant.vpn/pesto/response.py",
line 232, in __call__
self.headers,
RuntimeError: request object has expired
[3]:
def __call__(self, environ, start_response):
"""
WSGI callable - take ``pesto_app`` and adapt it to the WSGI interface.
"""
"""
# Previous version of code
self._content_iter = None
self.environ = environ
self.start_response = start_response
self.request = Request(environ)
return self
"""
# We need PestoWSGIApplication instance for each request we get
# as it may have different environ and start_response values.
# Especially in multi thread environment like mod_wsgi
wrapper = PestoWSGIApplication(self._pesto_app)
wrapper._app_args = self._app_args
wrapper._app_kwargs = self._app_kwargs
wrapper.environ = environ
wrapper.start_response = start_response
wrapper.request = Request(environ)
return wrapper
[4]:
def handler(request):
time.sleep(random.random())
return pesto.Response([
"<html><body><h1>def
handler(request):</h1><h2>matkor.beauty.ant.vpn, pesto version:
%r</h2></body></html>" % (pesto.__version__, )
])
application = pesto.to_wsgi(handler)
[5]:
ab -n 1000 -c 10 -d http://site.of.test/
--
Mateusz Korniak
Olly.