Question

Que faire pour une application WSGI python de moyenne à grande taille, Apache + mod_wsgi ou Nginx + mod_wsgi?

Quelle combinaison nécessitera plus de mémoire et de temps CPU?
Lequel est le plus rapide?
Quel est connu pour être plus stable que l'autre?

Je pense aussi à utiliser le serveur WSGI de CherryPy, mais j’entends dire que ce n’est pas très approprié pour une application très chargée, que savez-vous à ce sujet?

Remarque : je n'ai utilisé aucun framework Web Python, je viens d'écrire le tout à partir de rien.
Remarque ' : les autres suggestions sont également les bienvenues.

Était-ce utile?

La solution

Pour nginx / mod_wsgi, assurez-vous de lire:

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

En raison de la façon dont nginx est un système basé sur des événements, il présente des caractéristiques comportementales préjudiciables au blocage d’applications, comme c’est le cas avec les applications WSGI. Le pire scénario est qu'avec la configuration multi-processus nginx, vous pouvez voir les demandes des utilisateurs bloquées même si certains processus de travail nginx peuvent être inactifs. Apache / mod_wsgi ne rencontre pas ce problème, car les processus Apache n'acceptent les demandes que lorsqu'il dispose des ressources nécessaires pour les traiter. Apache / mod_wsgi donnera ainsi un comportement plus prévisible et fiable.

Autres conseils

L'auteur de nginx mod_wsgi explique certaines différences à Apache mod_wsgi in ce message de la liste de diffusion .

La principale différence est que nginx est conçu pour gérer un grand nombre de connexions dans un espace mémoire beaucoup plus petit. Cela le rend très bien adapté aux applications qui font des comètes comme des connexions pouvant avoir de nombreuses connexions ouvertes inactives. Cela lui donne également une empreinte mémoire beaucoup plus petite.

Du point de vue des performances brutes, nginx est plus rapide, mais pas si vite que je l’incluerais comme facteur déterminant.

Apache a l’avantage dans le domaine des modules disponibles et du fait qu’il est à peu près standard. Il sera installé par n'importe quel hébergeur Web et la plupart des techniciens le connaîtront très bien.

En outre, si vous utilisez mod_wsgi, il s'agit de votre serveur wsgi, vous n'avez donc même pas besoin de cherrypy.

En dehors de cela, le meilleur conseil que je puisse vous donner est d'essayer de configurer votre application dans les deux cas et de procéder à une analyse comparative, car peu importe ce que vous direz, votre kilométrage peut varier.

Le serveur Web de CherryPy a ceci d’avantage qu’il s’agit d’un serveur Web pur python (AFAIK), qui peut ou non vous faciliter le déploiement. De plus, je pourrais voir les avantages de l’utiliser si vous utilisez uniquement un serveur pour WSGI et du contenu statique.

(avertissement sans scrupule: j'ai écrit le code WSGI que je suis sur le point de mentionner)

Kamaelia bénéficiera de la prise en charge de WSGI dans la prochaine version. Ce qui est bien, c’est que vous pourrez probablement utiliser celui déjà créé ou créer le vôtre à l’aide du code HTTP et WSGI existant.

(fin de prise éhontée)

Cela dit, étant donné les options actuelles, je choisirais probablement CherryPy car il semble être le plus simple à configurer et je peux comprendre davantage le code python que le code C.

Vous ferez peut-être mieux d'essayer chacun d'eux et de voir quels sont les avantages et les inconvénients de chacun d'eux pour votre application spécifique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top