28 messages in ru.sysoev.nginxRe: [wsgi] Python interpreter initial...
FromSent OnAttachments
Manlio PerilloAug 20, 2007 3:15 am 
Igor SysoevAug 20, 2007 3:28 am 
Igor SysoevAug 20, 2007 3:41 am 
Igor SysoevAug 20, 2007 3:45 am 
Manlio PerilloAug 20, 2007 3:50 am 
Manlio PerilloAug 20, 2007 3:57 am 
Igor SysoevAug 20, 2007 6:17 am 
Manlio PerilloAug 20, 2007 6:35 am 
Manlio PerilloAug 20, 2007 1:16 pm 
Rui LopesAug 20, 2007 1:35 pm 
Aleksandar LazicAug 20, 2007 1:52 pm 
Manlio PerilloAug 20, 2007 1:55 pm 
Cliff WellsAug 20, 2007 4:22 pm 
Manlio PerilloAug 21, 2007 12:17 am 
Manlio PerilloAug 21, 2007 12:19 am 
Aleksandar LazicAug 21, 2007 12:56 am 
Aleksandar LazicAug 21, 2007 12:58 am 
Aleksandar LazicAug 21, 2007 1:00 am 
Manlio PerilloAug 21, 2007 1:04 am 
Manlio PerilloAug 21, 2007 4:51 am 
Aleksandar LazicAug 21, 2007 6:26 am 
marc...@public.gmane.orgAug 21, 2007 6:26 am 
Aleksandar LazicAug 21, 2007 6:34 am 
Manlio PerilloAug 21, 2007 6:35 am 
Kiril AngovAug 21, 2007 6:59 am 
Manlio PerilloAug 21, 2007 7:09 am 
Aleksandar LazicAug 21, 2007 7:17 am 
Cliff WellsAug 21, 2007 11:01 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [wsgi] Python interpreter initializationActions...
From:Igor Sysoev (is-G@public.gmane.org)
Date:Aug 20, 2007 6:17:49 am
List:ru.sysoev.nginx

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 ?