[Python] cgi ottimizzati ERA: web: sync vs. async
Manlio Perillo
manlio.perillo a gmail.com
Mar 13 Dic 2011 21:56:15 CET
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 13/12/2011 06:45, Roberto De Ioris ha scritto:
>
>>
>>
>> Io stavo valutando un altra strada (nel caso in cui non serva un elevato
>> grado di concorrenza): il buon vecchio CGI.
>> Ovviamente non CGI normale, ma fare in modo che l'interprete Python sia
>> embedato nel server (e pre-caricare in memoria quanto pių possibile
>> specialmente se read-only) e poi fare un fork + Python exec.
>>
>> Rispetto ad un CGI normale (fork + sys exec) mi aspetto un miglioramento
>> significativo, anche grazie al copy-on-write.
>>
>>
>
> Ho trovato un po' di tempo per tentare questo approccio:
>
> http://projects.unbit.it/uwsgi/wiki/CGI#Example10:optimizingCGIs
>
> effettivamente il guadagno prestazionale c'e', e anche tanto.
>
Grazie per la conferma!
> [...]
>
> Il "problema", e' che infilare i CGI in nginx (intendo senza passare per
> uWSGI) e' fuori discussione (almeno per linux) poiche' tutte le wait()
> sono bloccanti e anche usando WNOHANG sarebbe richiesto uno sforzo non
> indifferente al core di nginx (che dovrebbe chiamare waitpid() a
> intervalli regolari per vedere se qualcosa e' cambiato). Nei BSD sarebbe
> molto piu' facile, perche' kqueue() puo' rimanere in attesa di un processo
> oltre che di un file descriptor (bellissimo).
>
Il "trucco" č usare un socket UNIX domain bidirezionale, invece di due pipe.
In questo modo per Nginx la comunicazione con il processo CGI dovrebbe
essere analoga a quella con un client remoto.
In particolare non dovrebbe mai essere necessario chiamare waitpid.
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk7nu+8ACgkQscQJ24LbaURSQQCfXfDvuTer/IBRro1wsFE82qsO
FKUAniwhjPicHKRYss4TCdR8RbuWRPpU
=6awY
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python