Pergunta

O que usar para um médio a grande aplicação WSGI python, Apache + mod_wsgi ou Nginx + mod_wsgi?
Que combinação vai precisar de mais memória e tempo de CPU?
Qual deles é mais rápido?
Que é conhecido por ser mais estável do que o outro?
Também estou pensando em usar servidor WSGI do CherryPy mas ouvi dizer que não é muito adequado para uma aplicação muito de alta carga, o que você sabe sobre isso?
Nota :. Eu não utilizar qualquer Web Framework Python, eu só escrevi a coisa toda do zero
Nota ' :. Outras sugestões também são bem vindos

Foi útil?

Solução

Para nginx / mod_wsgi, garantir que você leia-se:

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

Por causa de como nginx é um debaixo sistema orientado a eventos, ele tem características comportamentais que são prejudiciais para bloquear aplicações como é o caso de aplicações baseadas WSGI. pior cenário é que, com multiprocess nginx configuração, você pode ver as solicitações do usuário ser bloqueado apesar de alguns processos de trabalho nginx pode ser ocioso. Apache / mod_wsgi não tem esse problema como processos do Apache só aceitará solicitações quando se tem os recursos para lidar com realmente o pedido. Apache / mod_wsgi assim dará um comportamento mais previsível e confiável.

Outras dicas

O autor do nginx mod_wsgi explica algumas diferenças para Apache mod_wsgi em esta mailing list mensagem .

A principal diferença é que nginx é construído para lidar com um grande número de conexões em um espaço de memória muito menor. Isso torna muito bem adaptado para aplicativos que estão fazendo cometa como conexões que podem ter muitas conexões abertas ociosas. Isso também dá bastante uma cópia do pé de memória menor.

De uma perspectiva de desempenho bruto, nginx é mais rápido, mas não muito mais rápido que eu iria incluir isso como um fator determinante.

Apache tem a vantagem na área de módulos disponíveis, eo fato de que é praticamente padrão. Qualquer host que você vá com a vontade de tê-lo instalado, ea maioria dos técnicos vão ser muito familiarizado com ele.

Além disso, se você usar mod_wsgi, é o seu servidor wsgi para que você não precisa mesmo de cherrypy.

Além disso, o melhor conselho que posso dar é tentar configurar seu aplicativo sob ambos e fazer alguma análise comparativa, uma vez que não importa o que qualquer um lhe diz, sua milhagem pode variar.

Uma coisa que webserver do CherryPy tem indo para ele é que ele é um servidor web python puro (AFAIK), que pode ou não pode tornar a implantação mais fácil para você. Além disso, eu podia ver os benefícios de usá-lo se você estiver usando apenas um servidor para WSGI e conteúdo estático.

(aviso plug descarado: Eu escrevi o código WSGI que eu estou a ponto de menção)

Kamaelia terá suporte WSGI vem no próximo lançamento. O legal é que você provavelmente vai ser capaz de usar o pré-fabricados um ou construir o seu próprio usando o código HTTP e WSGI existente.

(extremidade do tampão sem vergonha)

Com isso dito, dadas as opções atuais, eu pessoalmente provavelmente ir com CherryPy porque parece ser o mais simples de configurar e eu posso entender o código python moreso do que eu posso entender o código C.

Você pode fazer melhor tentar cada um deles e ver o que os prós e contras de cada um são para sua aplicação específica embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top