[Python] Non blocking http server e integrazione con database relazionali

Roberto De Ioris roberto a unbit.it
Dom 16 Mar 2014 19:40:50 CET


> 2014-03-16 4:46 GMT+00:00 Roberto De Ioris <roberto a unbit.it>:
>
>> Mi rendo conto che non e' un approccio molto tecnico, ma francamente
>> sentirmi dire "che cazzo dici !!! ho letto sul blog di topogigio che si
>> puo' fare e senza sforzo", beh un pochino mi rode...
>>
>
> Scusa, ma esattamente la soluzione quale sarebbe?
> Perche' niente da dire sul fare chiarezza riguardo i problemi di gevent e
> simili, ma io non e' che vedo molte soluzioni.
>
> Perche' programmare multithreading preemptivo ha pure tutti i suoi
> problemi, multiprocesso puro scala solo fino ad un certo punto e lavorare
> interamente a callback ha pure gli stessi problemi di gevent dal punto di
> vista di quello che *non* puoi fare (se non che quelli di twisted sono
> stati piu' chiari nel dire chiaro e tondo quello che *non* potevi fare
> gratis) e mi pare di ricordare che lo trovi molto meno comodo -- e se non
> fosse che mi sono girato la testa per trovare naturale CPS e sono fatto
> strano io -- sono in essenza d'accordo.
>
> Le alternative che *io* vedo sono tutte architetturali, ovvero mettersi
> nell'ordine di idee di avere un pool di worker fuori dall'app web e
> delegare quasi ogni cosa li.


Che sono le stesse che propongo io, django riceve la richiesta, fa tutti i
controlli del caso (come l'autenticazione) e poi passa la connessione (o
tramite proxy o tramite fd-passing su socket unix) al backend gevent che
continua a gestire la sessione liberando django. Il client non si accorge
di nulla.

Se ci sono altri modi "piu' semplici", io personalmente non li ho trovati.

--
Roberto De Ioris
http://unbit.it


Maggiori informazioni sulla lista Python