Pergunta

Estamos usando Torcida extensivamente para aplicações que requerem uma grande quantidade de e / s assíncrona.Há alguns casos onde o material é dependente da cpu em vez disso, e para que nós gerar um conjunto de processos para fazer o trabalho e ter um sistema de gestão dessas por vários servidores, bem - feito, a Torcida.Funciona muito bem.O problema é que é difícil trazer novos membros da equipe até a velocidade.A escrita de código assíncrono na Torcida exige uma quase vertical curva de aprendizagem.É como se os seres humanos só não acho que o caminho natural.

Estamos considerando uma abordagem mista, talvez.Talvez manter o xmlrpc parte do servidor de gestão de processos e na Torcida e implementar as outras coisas no código que, pelo menos, parece síncrona, em certa medida, embora não sendo como tal.Então, novamente, eu gosto do excesso explícito implícito, então tenho que pensar sobre isso um pouco mais.De qualquer maneira para greenlets - como isso funciona?Portanto, há Stackless e como você pode ver meus Gallentean avatar eu estou bem ciente do enorme sucesso em seu uso para CCP emblemática VÉSPERA de jogo Online em primeira mão.O que sobre Eventlet ou gevent?Bem por agora só Eventlet trabalha com a Torcida.No entanto gevent afirma ser mais rápido que ele não é um puro python implementação, mas sim depende de libevent em vez disso.Ele também afirma ter menos idiossincrasias e defeitos. gevent É mantido por 1 cara tanto quanto eu posso dizer.Isto faz-me um pouco desconfiado, mas todos os grandes projetos a iniciar este caminho para...Em seguida, há PyPy - Eu mesmo ainda não terminou de ler sobre o que um ainda - só vi isso neste segmento: Desvantagens do Stackless.

Tão confuso - eu estou querendo saber o que diabos fazer - soa como Eventlet é provavelmente a melhor aposta, mas é realmente estável o suficiente?Alguém aí tem alguma experiência com isso?Devemos ir com Stackless em vez disso, como tem sido e é uma tecnologia comprovada - como a Torcida está bem - e eles trabalham muito bem juntos.Mas ainda assim, eu odeio ter que ter uma versão separada do Python para fazer isso.o que fazer....

Esta um pouco desagradável entrada de blog bateu o prego na cabeça para mim: E / s assíncrona para Adultos Eu não entendo a Torcida está sendo como Java comentário como para mim o Java é normalmente onde você está no rosqueamento de mentalidade, mas que quer que seja.No entanto se que monkey patch coisa realmente funciona apenas como aquele, em seguida, wow.Just wow!

Foi útil?

Solução

Você pode querer verificar para fora:

Eventlet e gevent não são realmente comparáveis para Stackless, porque Stackless vem com uma biblioteca padrão que não está ciente de tasklets.Existem implementações de soquete para Stackless mas não há nada de tão abrangente como gevent.macaco.O CCP não usar ossos nus Stackless, ele tem algo chamado Stackless de e/S que AFAIK é apenas de windows e nunca foi de código aberto (?).

Tanto eventlet e gevent poderia ser feito para rodar no Stackless, ao invés de incluir na greenlet.Em algum ponto, nós até tentamos fazer isso como um GSoC projeto mas não foi possível encontrar um aluno.

Outras dicas

Respondendo parte da sua pergunta - se você olhar para http://speed.pypy.org você verá isso usando torcido em cima do Pypy poderia Dê -lhe algumas acelerações. Isso depende, é claro, da sua carga de trabalho, mas provavelmente vale a pena conferir.

Saúde,
Fijal

Eu construí um pouco de aplicativo da Web em tempo real no topo do eventlet e repoze.bfg (desisti de Django há um tempo atrás). Eu achei que o Eventlet e o Monkey Patching eram tão fáceis quanto Ted diz.

Gevent não é puro python, e depende estritamente do cpython. De estruturas da web que você mencionou Eventlet (OpenStack) e Tornado (FriendsFeed, Quora) tem a maior implantação.

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