In Java a serverlet, as far as I understand, is a class which conforms
to some API that allows it to serve one http request. Each instance is
executed in its own thread. The Python equivalent of the serverlet API
is a WSGI application and web2py is based on WSGI, therefore the
parallelization mechanism is equivalent to Java serverlets.

In web2py (the same in Django, Pylons, any any WSGI app) each http
request is executed in its own thread. Threads are recycled to server
non-concurrent requests and reuse database connections (pooling)
without need to close and reopen them. The web server can be
configured for a min number and a max number of threads.

I think the GIL in this context is a false problem. In fact in
production you can use Apache and run as many processes as the number
of cores that you have. Each process will create as many threads as it
needs to server multiple requests. The GIL is a problems only if one
process runs multiple threads on multiple cores. It is possible there
are some caveats with many cores but I have not really played with
apache configurations and benchmarks.

I do not think using Jython helps anything. According to these tests:
  
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
  http://pyevolve.sourceforge.net/wordpress/?p=1189
Jython is 2x-3x slower than cpython. So you may get better scaling
with multiple cores but you pay huge perfomance hit.

Web2py runs on Jython but there is a known bug in Java regular
expressions that Sun marked as "won'tfix" that can cause runaway
problems when parsing complex templates. This is not a web2py specific
problem but we have seen effects of the bug in some web2py apps.

Massimo





On Aug 23, 11:29 pm, pierreth <pierre.thibau...@gmail.com> wrote:
> Hello,
>
> I would like to know how Web2py is managing threads. Is it like Java
> servlets where requests are mapped to servlets while one servlet
> object can be used by multiple threads at the same time to serve many
> requests?
>
> Are some users here using Jython with Web2py to get around the ugly
> Pyhton GIL? I would to know about your experience.
>
> ------------------
> Pierre

Reply via email to