> Di recente ho letto un po di tornado, e in particolare mi sono soffermato > sul modulo tornado.httpserver(Non-blocking HTTP server). Stando a quello > che c'è scritto sulla documentazione ufficiale parla di "non-blocking, > single-threaded HTTP server" e di risolvere il problemi di tipo C10K. Qua > sembra interessante, anche se non ho la minima idea di come funzioni. Sono > rimasto perplesso quando ho provato a cercare qualche ORM da usare con > tornado e non ho trovato nulla. Dopo un po di ricerche, da quello che ho > capito, un orm non è fatto per lavorare in maniera asincrona. E non ho > neppure trovato una libreria per collegarsi a qualche tipo di database > relazione(a parte quella con MySql ma sembra non più supportata). > > Detto questo, non riesco a capire l'utilità di un HTTP Server con > performance elevatissime ma che non permetta una minima interazione con il > database. > > Probabilmente sopra ho scritto delle cavolate ma mi mancano completamente > le basi per questo tipo di argomenti e volevo capire meglio come > funzionano > e quali sono i campi di applicazione di tecnologie simili. >
Non hai scritto cavolate, e anzi ti faccio i complimenti perche' nonostante dichiari di non capire bene la materia in realta' ti sei accorto del (secondo me) problema piu' grosso di tutte le tecnologie non-blocking nel mondo python: sono vendute MALISSIMO, in modo quasi dannoso. Il paradigma non-blocking ha una semplice regola: o sei non-blocking al 100% oppure la tua app non funziona. punto. il 99.9999999% non e' sufficiente. Una singola parte non bloccante ti manda l'app in malora. (ovvio, si potrebbero non avere problemi per mesi, ma all'improvviso una query resta bloccata e tutta l'app va giu'...) Ad oggi ho fatto consulenza su quasi 200 app Django che giravano su uWSGI+gevent o gunicorn+gevent. Di queste neanche il 10% erano corrette in quanto la maggior parte usavano i db adapter standard, o si collegavano a servizi esterni (come api http) usando moduli blocking e cosi' via. Parliamo di quasi il 90% di utenti che stanno usando una tecnologia in modo sbagliato e che continuano a pubblicizzare il loro "successo" con gevent. La stessa cosa succede con tornado, eventlet e sono sicuro che succedera' con asyncio/tulip Uno dei punti di forza di python (secondo me) e' la gigantesca disponibilita' di moduli, e un utente medio si aspetta di poter continuare a usarli tutti senza problemi, soprattutto se NON gli comunichi a caratteri cubitali tutte le implicazioni del non-blocking (e invece gli porti solo i vantaggi) Detto questo, ci sono comunque diversi moduli async-friendly/tornado-friendly ma sono spesso "progettini", a volte sviluppati senza l'attenzione necessaria ad un modulo db-adapter (vedere il lavoro titanico che c'e' dietro a psycopg2, che per la cronaca puo' essere adattato al non-blocking) In conclusione, se sei fortunato troverai un adapter per il tuo db che funziona con tornado, ma dovrai tenere a mente che ogni volta che introduci una funzionalita' questa dovra' cooperare con il resto del sistema. -- Roberto De Ioris http://unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python