[Python] Non blocking http server e integrazione con database relazionali
Roberto De Ioris
roberto a unbit.it
Sab 15 Mar 2014 19:08:47 CET
> 2014-03-15 0:54 GMT+01:00 Giampaolo Rodola' <g.rodola a gmail.com>:
>
>>
>> 2014-03-14 18:12 GMT+01:00 Manlio Perillo <manlio.perillo a gmail.com>:
>>
>> Ogni coroutine è come un thread ed ha bisogno di memoria per lo stack,
>>> oltre poi al costo per il context switch.
>>>
>>
>> Rispetto ad un thread il costo è però pressochè nullo.
>>
>
> Roberto tempo fa ha scritto che ha visto applicazioni con gevent con
> utilizzo pesante della CPU, nel caso di molte coroutine.
>
>
purtroppo si, le greenlet hanno comunque uno stack e gevent comunque in
media chiama molte piu' syscall rispetto ad un uso classico (per svariati
motivi).
E' un prodotto/progetto che adoro, ma va' usato nei posti e nel modo giusto.
Oggi ho buttato giu' questo:
http://uwsgi-docs.readthedocs.org/en/latest/articles/OffloadingWebsocketsAndSSE.html
... bisogna farla finita di credere alla favola che django gira "gratis"
su gevent (tantomeno su tornado)...
Non c'e' niente da fare, il vantaggio di nodejs, Go ecc. ecc. e' che TUTTE
le librerie di terze parti sono "non-blocking-friendly" (passatemi il
termine) e quindi gli utenti (piu' o meno) non devono preoccuparsi di
nulla... questo non puo' avvenire (facilmente) con i linguaggi che sono
nati in un mondo multiprocess/multithread e che gia' hanno una libreria
sconfinata di moduli di terze parti (costruita in decenni)..
In ogni caso il passaggio non potra' essere indolore (e gia' ci sono le
prime vittime, senza contare quelli che hanno proprio disertato cambiando
bandiera...)
--
Roberto De Ioris
http://unbit.it
Maggiori informazioni sulla lista
Python