[wsgi] Python interpreter initialization

Igor Sysoev is at rambler-co.ru
Mon Aug 20 17:18:12 MSD 2007

On Mon, Aug 20, 2007 at 12:51:04PM +0200, Manlio Perillo wrote:

> Igor Sysoev ha scritto:
> >On Mon, Aug 20, 2007 at 12:15:26PM +0200, Manlio Perillo wrote:
> >
> >>I need some help for the development of mod_wsgi.
> >>
> >>Before using the Python C API for embedding Python code, the main 
> >>interpreter must be initialized by calling
> >>  Py_Initialize();
> >>
> >>This function set a global context.
> >
> >By the way, python is the most unsuitable language to embed in nginx - it
> >has the single interpreter. That means that you could not safely 
> >reconfigure
> >nginx. Even perl (unsuitable too) allows several interpreters.
> >
> Python *has* subinterpreters... (see the Apache mod_wsgi implementation 
> as an example).

Yes, I have seen.

> I'm using only the main interpreter because I want to keep the code as 
> simple as possible.
> As I have written, my design goal is not to write a general module like 
> mod_perl (or Apache mod_wsgi), but to just use nginx to have a HTTP 
> server for serving WSGI applications (with mod_perl you can set nginx 
> variables, too).
> I'm using nginx since it is much simpler to write a module (it is 
> simpler than writing Apache modules!) than a full HTTP server from scratch).
> However I'm interested in the reconfiguration problem. Can you give me 
> more details?

While reconfiguration in perl module nginx creates new interpreter and
evalutes all code in its. If configuration will fail, then nginx continues
to run with old interpreter. If new configureation is right, then
old interpreter is destroyed.

> This is not a really big problem, since the *right way* to deploy 
> mod_wsgi is to use another nginx proxy server behind the nginx server 
> with mod_wsgi; so I can just restart the server (and the proxy can limit 
> the number of request to the wsgi nginx server).
> By the way, I'm also planning to release a stripped down version of 
> nginx, to be used as a stand alone server to serve WSGI applications and 
> with command line support for the most used options (I can write a 
> wrapper in Python that write a temporary configuration file).

I still do not understand WSGI protocol. Is there graphic presentation
of this protocol ?

Igor Sysoev

More information about the nginx mailing list