-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Alessandro Agosto ha scritto: > > > Il giorno 21 gennaio 2010 23.12, Manlio Perillo > <manlio_peri...@libero.it <mailto:manlio_peri...@libero.it>> ha scritto: > [...] > psycopg2 (uno delle implementazioni DBAPI2 più utilizzate per > PostgreSQL) ha cercato di implementarne il supporto, ma l'autore ci ha > rinunciato. > > 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? >
Al momento non ricordo, cerca nella mailing list di psycopg. > > Altrimenti, se ho scritto una app in python che non è basata su > twisted > > ma volessi usare una delle sue interfacce asincrone per la connessione > > ai db avrei qualche problema? > > Probabilmente si. > > Allora l'unica soluzione credo sia testarle, magari con una semplice app > wsgi su un webserver asincrono. > Io per Twisted ho implementato un client in puro Python per PostgreSQL: http://hg.mperillo.ath.cx/twisted/pglib/ Ma non l'ho mai usato in produzione. > Una interfaccia asincrona ti permette di non bloccare un intero thread > mentre stai aspettando i dati dal database. > Per fare questo hai bisogno di un qualche sistema che ti dica quando un > socket è pronto per essere letto. > > 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, Non dovrebbe. L'importante è che tu abbia un solo main loop per thread/processo. > 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... No, è documentato da un altra parte: http://www.postgresql.org/docs/8.4/static/libpq-status.html `PQsocket`. > [...] > La programmazione asincrona non è banale, e non si integra bene con il > resto del mondo che è sincrono. > > 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. > Non accade spesso. L'unico caso reale che mi viene in mente è quello in cui tu debba fare una richiesta HTTP ad un server esterno. > 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 > Per applicazioni e database decenti, le query non ci mettono molto ad essere eseguite. Ed il database è comunque sullo stesso server o sulla stessa LAN. Questo tipo di latenze si possono risolvere utilizzando un server che usi più di un processo per servire le richieste HTTP. > Ciao manlio e grazie mille per la risposta :) Di nulla, ciao. Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAktZo6IACgkQscQJ24LbaURNxwCfV5GVLFUAqx6qWTrWdzMGTloa EUwAnA8NPsrD4FLc+/Er9vT8xQZcIJbf =TMdZ -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python