<br><br><div class="gmail_quote">Il giorno 21 gennaio 2010 23.12, Manlio Perillo <span dir="ltr"><<a href="mailto:manlio_perillo@libero.it">manlio_perillo@libero.it</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Qualcosa di simile è offerto anche dalla libpq di PostgreSQL:<br>
<a href="http://www.postgresql.org/docs/8.4/static/libpq-async.html" target="_blank">http://www.postgresql.org/docs/8.4/static/libpq-async.html</a><br></blockquote><div>Grazie mille per la segnalazione, gli stò dando una occhiata e sembra interessante, ad una prima occhiata :) <br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
psycopg2 (uno delle implementazioni DBAPI2 più utilizzate per<br>
PostgreSQL) ha cercato di implementarne il supporto, ma l'autore ci ha<br>
rinunciato.</blockquote><div>Uhm, questo non mi fà ben sperare. Sapresti per caso indicarmi qualche discussione o altra risorsa in cui parla dei problemi a cui è andato in contro? <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">
> Altrimenti, se ho scritto una app in python che non è basata su twisted<br>
> ma volessi usare una delle sue interfacce asincrone per la connessione<br>
> ai db avrei qualche problema?<br>
<br>
</div>Probabilmente si.</blockquote><div>Allora l'unica soluzione credo sia testarle, magari con una semplice app wsgi su un webserver asincrono. <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">
</div>
Una interfaccia asincrona ti permette di non bloccare un intero thread<br>
mentre stai aspettando i dati dal database.<br>
Per fare questo hai bisogno di un qualche sistema che ti dica quando un<br>
socket è pronto per essere letto.<br></blockquote><div>Quando ho scritto il primo modulo di estensione in python ho utilizzato picoev, una piccola libreria che permette una astrazione sopra le interfacce epoll/kqueue/select (a differenza di libev, supporta solo questi metodi e non è altrettanto matura, ma secondo quanto ho visto sembra molto promettente) e m'era balzata in testa l'idea di provare a usare l'interfaccia odbc e farla passare attraverso il suo loop, ma poi m'è venuto il dubbio che potesse lo stesso bloccarmi l'intera applicazione, e cosa più importante, dall'ignoranza che ho verso le api a disposizione per effettuare connessioni verso i db, mi pare che queste "nascondano" la socket di connessione... poi magari mi sbaglio ma ad esempio guardando il link che mi hai passato su postgres parla di socket ma non dice che la funzione di connessione ritorna una referenza alla socket usata...<br>
Comunque cercherò meglio.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Twisted ti offre questo sistema, e molto altro in un ambiente ben integrato.<br>
<br>
Ma puoi farne a meno, ma riscrivere quello che Twisted offre già non è<br>
banale, a meno di non avere una applicazione semplice.<br><div class="im"></div></blockquote><div>Eh già, hai proprio ragione.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
La programmazione asincrona non è banale, e non si integra bene con il<br>
resto del mondo che è sincrono.<br></blockquote><div>Purtroppo è quello che si vede/legge in ogni guida :( Basta un niente che venga usato dalla tua applicazione che faccia operazioni di I/O in modo non asincrono per annullare gli sforzi fatti.<br>
<br>Un po' è un peccato però, alcuni webserver python sono asincroni ma ahimè non ha molto senso usare una app senza db, e mi sorprende che nessuno si sia mai messo seriamente a pensare qualche soluzione. :s<br></div>
<div> <br>Ciao manlio e grazie mille per la risposta :)<br>@Lawrence:<br>Interessante!<br>Non mi è chiaro però (non ho letto le docs, dopo lo farò)... per eseguire il codice lato client l'utente deve installare il V8 engine? Io ho provato il test senza problemi :s<br>
Wiki dice che incrementa le performance js compilandolo... a questo punto credo venga usato solo lato server mentre la parte lato client sia comune js, sbaglio?<br>Grazie comunque per la segnalazione :) <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div><br>-- <br>Alessandro A.<br>