2013-01-12 8 views
17

Sia "pypy" che "gevent" dovrebbero fornire prestazioni elevate. Pypy è presumibilmente più veloce di CPython, mentre gevent è basato su co-routines e greenlet, che presumibilmente rappresentano un server web più veloce.Quale configurazione è più efficiente? Flask with pypy o Flask with gevent?

Tuttavia, non sono compatibili l'uno con l'altro.

Mi chiedo che l'installazione è più efficiente (in termini di velocità/prestazioni):

  • Il server Flask incorporato in esecuzione sul PyPy

o:

  • Il server gevent, in esecuzione su CPython
+2

Che ne dici del benchmarking per un'attività che è rilevante per te? Non vedo in alcun modo che questo possa essere costruttivo. – delnan

+0

Questa è una domanda specifica e ha 3 risposte potenziali: 1. flask-pypy è ovviamente più veloce 2. flask-gevent è ovviamente più veloce 3. sono vicini e/o è difficile da dire senza parametri di riferimento. – hasen

risposta

2

Il server di flask incorporato è un BaseHTTPServer o così, mai usato. Lo scenario migliore è molto probabilmente tornado + pypy o qualcosa del genere. Benchmark prima di usare però. Dipende anche abbastanza drasticamente da quello che stai facendo. I benchmark del web server e del framework web sono in genere un tipo di benchmark mondiale. La tua applicazione è davvero così?

Cheers, fijal

+5

Chi ha mai chiuso questa domanda non è corretto nel farlo! Ho appena letto che una particolare libreria è 10 volte più veloce in 'PyPy' che in' CPython' .. e d'altra parte I * do * esegue un'applicazione Flask con 'gevent'. Perciò ho guardato e sono incappato in questa domanda ** molto ** interessante .. ma a quanto pare alcune persone amano marcare alcune domande come * distruttive * .. sarebbe stato davvero bello se qualche ragazzo là fuori avesse esperienza in * entrambi *. Quindi, perché è necessario interrompere la condivisione di quelle esperienze? .. – hsk81

13

La risposta breve è: E 'più veloce con PyPy, e ha maggiore concorrenza con gevent.

È possibile utilizzare gevent e PyPy contemporaneamente (lo facciamo su PubNub per più progetti) anche se può essere complicato. A partire da PyPy 2.2, sono necessarie alcune patch per gevent sull'implementazione del socket. Abbiamo un ramo sperimentale su github per questo: https://github.com/pubnub/gevent/tree/pypy-hacks - Da utilizzare in combinazione con pypycore.

La nostra raccomandazione? Utilizzare Flask con PyPy e gevent. Ottieni il meglio da entrambi i mondi!

+0

Dai un'occhiata a [qui] (https://github.com/gevent/gevent/issues/248). Gevent ora supporta pypy. –

+0

@ kawing-chiu Sì. Il supporto PyPy è disponibile nelle attuali versioni beta di gevent 1.1. È comunque consigliabile fare attenzione. Le beta continuano a ricevere correzioni di bug. Basta tenere d'occhio il registro di commit per vedere se ci sono delle modifiche che potrebbero influenzare la tua applicazione dall'ultima versione beta. –

0

Pypy è compatibile con Gevent +1.1 (http://www.gevent.org/changelog.html). È anche compatibile con Python 3. Quindi, perché non usare entrambi? Pypy migliorerà la perfomance dell'elaborazione mentre Gevent aiuterà nelle attività legate all'IO (ad es. Query di database, richieste web) usando le connessioni asincrone sotterranee.