Domanda

Stiamo usando ritorto ampiamente per le applicazioni che richiedono una grande quantità di IO asincrono. Ci sono alcuni casi in cui è roba CPU bound, invece e per questo abbiamo Spawn un pool di processi per fare il lavoro e hanno un sistema per la gestione di questi su più server, come pure - tutto fatto in ritorto. Funziona alla grande. Il problema è che è difficile portare nuovi membri del team fino a velocità. La scrittura di codice asincrono in ritorto richiede una curva di apprendimento quasi verticale. E 'come se gli esseri umani semplicemente non la pensa così, naturalmente.

Stiamo prendendo in considerazione un approccio misto, forse. Forse mantenere la parte e il processo di gestione del server XMLRPC in ritorto e implementare le altre cose nel codice che almeno sembra sincrone in una certa misura, pur non essendo in quanto tale. Poi di nuovo mi piace esplicita oltre implicita quindi devo pensare a questo un po 'di più. In ogni caso sul greenlets - quanto bene fa quel lavoro roba? Quindi c'è Stackless e come potete vedere dal mio Gallente avatar Sono ben consapevole della enorme successo in esso di uso per il fiore all'occhiello EVE Online gioco di prima mano del PCC. Che dire Eventlet o gevent? Bene per ora funziona solo Eventlet con Twisted. Tuttavia affermazioni gevent di essere più veloce in quanto non è una pura implementazione pitone, ma piuttosto dipende da tali libevent invece. Essa sostiene inoltre di avere un minor numero di idiosincrasie e difetti. gevent E 'mantenuto da 1 ragazzo, per quanto posso dire. Questo mi fa un po 'diffidenti, ma tutti i grandi progetti di start in questo modo così ... Poi c'è PyPy - non ho nemmeno finito di leggere su quella ancora - appena visto in questa discussione: Inconvenienti di Stackless .

così confuso - mi chiedo cosa diavolo fare - suona come Eventlet è probabilmente la cosa migliore, ma è davvero sufficiente stabile? Chiunque là fuori ha qualche esperienza con esso? Dovremmo andare con Stackless, invece, come è stato in giro ed è una tecnologia comprovata - proprio come ritorto è così - e lo fanno lavorare insieme piacevolmente. Ma ancora Odio dover avere una versione separata di Python per fare questo. cosa fare ....

Questa voce blog un po 'antipatico colpito il chiodo sulla testa per me però: Asynchronous iO per Grownups non ottengo il torto è essere come Java osservazione da me Java è in genere dove siete nella mentalità threading ma qualunque cosa. Tuttavia, se quella cosa cerotto scimmia funziona davvero proprio così allora wow. Basta wow!

È stato utile?

Soluzione

Si potrebbe voler controllare:

Eventlet e gevent non sono realmente paragonabili a Stackless, perché le navi stackless con una libreria standard che non è a conoscenza di tasklets. Ci sono implementazioni di presa per Stackless ma non c'è nulla di così completa come < a href = "http://www.gevent.org/gevent.monkey.html" rel = "noreferrer"> gevent.monkey . PCC non usa ossa nude Stackless, ha qualcosa chiamato Stackless I / O, che per quanto ne so è solo per Windows e non è mai stato open source (?).

Sia eventlet e gevent potrebbe essere fatto per funzionare sul Stackless piuttosto che su greenlet. Ad un certo punto abbiamo anche cercato di fare questo come un progetto GSoC , ma non ha trovato uno studente.

Altri suggerimenti

Risposta parte della tua domanda - se si guarda a http://speed.pypy.org te' vedrai che utilizzando contorto in cima PyPy possono darvi alcuni incrementi nella velocità. Questo dipende ovviamente dal carico di lavoro, ma è probabilmente la pena di verificare.

Saluti,
fijal

Ho costruito una piccola applicazione web in tempo reale sulla parte superiore del eventlet e repoze.bfg (ho rinunciato a Django un po 'di tempo fa). Ho trovato eventlet e la scimmia patch per essere semplice come dice Ted.

Gevent non è puro Python, e dipende strettamente CPython. Da framework web che lei ha citato Eventlet (OpenStack) e Tornado (FriendsFeed, Quora) è la più grande deploy.

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