On 03/01/2014 16:41, enrico franchi wrote:

2014/1/3 Manlio Perillo <manlio.peri...@gmail.com
<mailto:manlio.peri...@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

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a