[Python] Deploy con nginx e proxy_pass

Manlio Perillo manlio.perillo a gmail.com
Ven 3 Gen 2014 17:31:47 CET


On 03/01/2014 16:41, enrico franchi wrote:
>
> 2014/1/3 Manlio Perillo <manlio.perillo a gmail.com
> <mailto:manlio.perillo a gmail.com>>
>
>     Per concludere, tieni conto che usare cose come Tornado è tutt'altro
>     che banale.
>
>
> Beh, fare scalare qualcosa di non asincrono e' ancora meno banale, IMHO.
>

No, direi che è banale.
Usi Apache + mod_wsgi e spendi tanti bei soldi in hardware :)

>     Tutto lo stack (applicazione + framework + eventuali librerie) deve
>     essere sviluppato con la programmazione asincrona in mente.
>
>
> Vero. Ma d'altra parte non e' che ci sia un mucchio di soluzioni. O
> molli python del tutto...
>

Le soluzioni ci sarebbero pure. A livello di sistema operativo il 
supporto c'è.  Il problema è che non è uniforme come dovrebbe.  Vedi ad 
esempio le differenze nell'implementazione di posix_aio, il fatto che 
posix_aio funziona solo sui file ma nulla vieta in teoria di usarlo 
anche per i socket e altro.

Vedi il fatto che USB che è asincrono per natura, nelle varie 
implementazioni non usa l'interfaccia posix_aio, ma una diversa (parlo 
di USB perchè lo devo usare per un progetto personale e mi sto sentendo 
male a vedere come è implementato).

Vedi il fatto che su Windows hai solo l'equivalente di posix_aio ma non 
quello di epoll/kqueue.  Potrei continuare all'infinito...

L'altra mancanza grave è l'implementazione dei "protocolli" di 
comunicazione.  Nella libreria standard di Python (ma non solo) hai 
praticamente dei *giocattoli*.  Le implementazioni serie sono nei 
framework asincroni, ed **ognuno** reimplementa tutto e funziona solo 
con quel framework.  La libreria standard di Python reinventerà tutto di 
nuovo, perchè avrà il suo bel framework asincrono, su cui poi si 
dovranno reimplementare tutti i protocolli.

L'API migliore che ho visto è quella della libpq, per la cronaca.
Migliore perchè non dipende da nessun framework, e si mantiene usabile.


[[piccolo rant di inizio anno]]

>       E' vero che ci sono dei monkey patch per alcune funzioni della
>     libreria standard, ma non ritengo sia saggio affidarsi ciecamente a
>     loro.
>
>
> Funzionicchiano, via. Parlo di gevent, non so quelli di tornado.
>

Visto che Tornado usa gevent, immagino si basi su quelli.

>       Python e la libreria standard semplicemente non sono pensati per
>     un ambiente a green thread.
>
>
> Ma no, se hai un martello sufficientemente grande (e non hai paura di
> usarlo) si fa tutto. ;)

Incluso scassare tutto alla prima disattenzione. ;)

> Si, vero che non sono pensati, quello e' indubbio. Pero' diciamo che ce
> la si fa… ;)
>
> -ho visto perfino django martellato a forza in logiche asincrone
> (backend, non frontend) -
>


Ciao   Manlio



Maggiori informazioni sulla lista Python