2013-05-02 17 views

risposta

31
  1. Supporto libreria. Non tutte le librerie sono compatibili con PyPy.

    La soluzione migliore è provare effettivamente a eseguire pypy manage.py test e vedere se si rompe. Quindi sai quali dipendenze devono essere allineate.

    http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

  2. server web

    Non è possibile utilizzare PyPy con Apache. È necessario utilizzare un server web pure-python + nginx. È POSSIBILE ottenerlo working on uwsgi.

+16

Io uso pypy + gunicorn + django + nginx e funziona come un fascino. –

8

PyPy wiki elenca Django come compatibile, ma non fornisce informazioni dettagliate su quanto di Django è stato testato. Non sono a conoscenza di un'importante distribuzione di Django che esegue PyPy anziché CPython. Una domanda migliore è perché vorresti passare a PyPy per un'app Django, specialmente perché Django è stato ampiamente testato e distribuito con CPython.

PyPy è adatto per attività che richiedono un'intensità di calcolo. Di solito le app Web non lo sono. Il benchmark di Django su cui basano i loro numeri di performance è essenzialmente un benchmark di rendering di template che è un compito intensivo della CPU. Questo non è rappresentativo della maggior parte delle app Web in cui il collo della bottiglia tende ad essere I/O. In quanto tale, PyPy potrebbe non velocizzare il tuo sito tanto quanto quei grafici ti portano a credere.

+48

I "server Web sono vincolati all'IO, non preoccuparti di linguaggi lenti" è apparentemente vivo e vegeto. So che il 50% del tempo trascorso nel mio sito web pesante di un database è EFFETTIVAMENTE PYTHON PROCESSING TIME. I modelli hanno bisogno di rendering, i querysets richiedono deepcopying. Gli sviluppatori responsabili dovrebbero cercare miglioramenti delle prestazioni ovunque, non solo nel livello DB. – Thomas

+7

"Questo non è rappresentativo della * maggior * applicazione web in cui il collo della bottiglia tende ad essere I/O." Come sempre è necessario un profilo per capire dove sono i colli di bottiglia. Da nessuna parte questo implica che non ti devi preoccupare di scrivere codice ottimizzato. Gli sviluppatori responsabili ottimizzano i percorsi critici della loro app. Passare a un runtime Python sperimentale basato su un benchmark di rendering dei template è difficilmente responsabile! – CadentOrange

+4

Ho fatto alcuni test di cpython2 vs pypy. I test delle prestazioni vengono eseguiti molto più velocemente con pypy. D'altra parte, le pagine di django con query db sono servite molto più velocemente con cpython. – francescortiz