Domanda

Cosa usare per un'applicazione WSGI python medio-grande, Apache + mod_wsgi o Nginx + mod_wsgi?

Quale combinazione richiederà più tempo di memoria e CPU?
Quale è più veloce?
Quale è noto per essere più stabile dell'altro?

Sto anche pensando di utilizzare il server WSGI di CherryPy, ma ho sentito che non è molto adatto per un'applicazione a carico molto elevato, cosa ne sai?
Nota : non ho usato alcun Python Web Framework, ho appena scritto tutto da zero.
Nota' : sono graditi anche altri suggerimenti.

È stato utile?

Soluzione

Per nginx / mod_wsgi, assicurati di leggere:

http: // blog. dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html

A causa del modo in cui nginx è un sistema guidato da eventi, ha caratteristiche comportamentali dannose per il blocco di applicazioni come nel caso delle applicazioni basate su WSGI. Lo scenario peggiore è che con la configurazione nginx multiprocesso, è possibile vedere le richieste degli utenti bloccate anche se alcuni processi di lavoro nginx potrebbero essere inattivi. Apache / mod_wsgi non ha questo problema in quanto i processi Apache accetteranno richieste solo quando ha le risorse per gestire effettivamente la richiesta. Apache / mod_wsgi fornirà quindi un comportamento più prevedibile e affidabile.

Altri suggerimenti

L'autore di nginx mod_wsgi spiega alcune differenze con Apache mod_wsgi in questo messaggio della mailing list .

La differenza principale è che nginx è costruito per gestire un gran numero di connessioni in uno spazio di memoria molto più piccolo. Questo lo rende molto adatto per le app che stanno effettuando connessioni come una cometa che possono avere molte connessioni inattive. Questo dà anche una dimensione di memoria piuttosto ridotta.

Dal punto di vista delle prestazioni non elaborate, nginx è più veloce, ma non molto più veloce che lo includerei come fattore determinante.

Apache ha il vantaggio nell'area dei moduli disponibili e il fatto che è praticamente standard. Ogni host web con cui lo avrai avrà installato e la maggior parte dei tecnici ne avrà molta familiarità.

Inoltre, se usi mod_wsgi, è il tuo server wsgi quindi non hai nemmeno bisogno di cherrypy.

Oltre a ciò, il miglior consiglio che posso dare è provare a configurare la tua app in entrambi i modi e fare un po 'di benchmarking, dal momento che, indipendentemente da ciò che qualcuno ti dice, il tuo chilometraggio può variare.

Una cosa che il webserver di CherryPy sta facendo è che è un webserver di Python puro (AFAIK), che può rendere la distribuzione più semplice per te. Inoltre, potrei vedere i vantaggi di usarlo se stai usando un server per WSGI e contenuto statico.

(avviso spudorato di plug-in: ho scritto il codice WSGI che sto per citare)

Kamaelia avrà il supporto WSGI in arrivo nella prossima versione. La cosa interessante è che probabilmente sarai in grado di utilizzare quello prefabbricato o crearne uno tuo utilizzando il codice HTTP e WSGI esistente.

(termina la spina senza vergogna)

Detto questo, date le opzioni attuali, probabilmente andrei personalmente con CherryPy perché sembra essere il più semplice da configurare e posso capire il codice Python più di quanto io possa capire il codice C.

Puoi fare del tuo meglio per provarli e vedere quali sono i pro ei contro di ciascuno per la tua specifica applicazione.

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