Domanda

Molte librerie Python, anche quelli recentemente scritto, utilizzare httplib2 o l'interfaccia socket per eseguire le attività di rete.

Questi sono, ovviamente, più facile da codificare il rispetto ritorto a causa della loro natura, il blocco, ma penso che questo è uno svantaggio quando integrandoli con altri codici, uno in particolare GUI. Se si desidera che la scalabilità, concorrenza o l'integrazione GUI evitando il multithreading, Contorto è quindi una scelta naturale.

Quindi sarei interessato a pareri in quelle materie:

  1. Nel caso in nuovo codice di rete (con l'eccezione di strumenti a linea di comando piccolo) essere scritto con Twisted?
  2. Ti mescolare Contorto, http2lib o il codice presa nello stesso progetto?
  3. è divinatorio torto a maggior parte delle biblioteche (è più complesso rispetto alle alternative, di introdurre una dipendenza per un pacchetto non standard ...)?

Modifica per favore fatemelo frase presente in un altro modo. Ti senti scrivere nuovo codice della libreria con Twisted può aggiungere un ostacolo alla sua adozione? Twisted ha benefici evidenti (specialmente portabilità e scalabilità dichiarata dal gimel), ma il fatto che non è una libreria di base pitone può essere considerata da alcuni come un inconveniente.

È stato utile?

Soluzione

  1. Dovrebbe nuovo codice di rete (con l'eccezione di piccoli utensili da riga di comando) essere scritta con Twisted?
    • Forse. Dipende molto. A volte il suo solo abbastanza facile da avvolgere le chiamate di blocco nel proprio thread. Ritorto è un bene per il codice di rete su larga scala.
  2. Ti mescolare Contorto, http2lib o presa di codice nello stesso progetto?
    • Certo. Ma bisogna ricordare che è ritorto a thread singolo, e che ogni chiamata di blocco in ritorto bloccherà l'intero motore.
  3. è divinatorio torto a maggior parte delle biblioteche (è più complesso rispetto alle alternative, introdurre una dipendenza per un pacchetto non standard ...)?
    • Ci sono molti fanatici torti che dirà essa appartiene nella libreria standard di Python. Ma molte persone possono implementare codice di rete decente con asyncore / asynchat.

Altri suggerimenti

Vedere asincrono-programmazione-in-python-twisted , dovrete per decidere se a seconda di un non-standard (esterno) biblioteca adatta alle vostre esigenze. Si noti la risposta da @Glyph , è il fondatore del progetto Twisted, e può rispondere a qualsiasi autorevolmente <=> domanda relativa.

  

Al centro di librerie come torto, la funzione nel ciclo principale non è il sonno, ma una chiamata di sistema operativo come select () o poll (), come esposto da un modulo come il modulo di selezione Python. Dico "come" scegliere, perché questa è un'API che varia molto tra le piattaforme, e quasi ogni GUI toolkit ha la sua versione. Twisted attualmente fornisce un'interfaccia astratta a 14 differenti variazioni su questo tema. La cosa comune che un tale API fornisce è fornire un modo per dire "Ecco un elenco di eventi che sto aspettando. Vai a dormire fino a quando uno di loro accade, poi svegliarsi e mi dicono che uno di loro era. "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top