Pergunta

Muitas bibliotecas python, mesmo os recém-escritos, usar httplib2 ou a interface de soquete para executar tarefas de rede.

Essas são, obviamente, mais fácil de código em que torcidas devido a sua natureza de bloqueio, mas acho que isso é uma desvantagem quando integrá-los com outro código, uma especialmente GUI. Se você quiser escalabilidade, concorrência ou a integração GUI, evitando multithreading, Torcido é, então, uma escolha natural.

Então, eu estaria interessado em opiniões nos assuntos:

  1. novo código de rede deve (com exceção de ferramentas de linha de comando pequena) ser escrito com torcida?
  2. Você misturar Torcido, http2lib ou código tomada no mesmo projeto?
  3. é torcido pythônico para a maioria das bibliotecas (é mais complexa do que as alternativas, introduzir uma dependência para um pacote não-padrão ...)?

Editar: por favor deixe-me esta frase de outra maneira. Você sente a escrever o novo código da biblioteca com torcida pode adicionar uma barreira para sua adoção? Torcida tem benefícios óbvios (especialmente portabilidade e escalabilidade como afirma gimel), mas o fato de que ele não é uma biblioteca central python pode ser considerada por alguns como uma desvantagem.

Foi útil?

Solução

  1. código nova rede deve (com exceção de ferramentas de linha de comando pequenas) ser escrito com torcida?
    • Talvez. Ela realmente depende. Às vezes é suficiente apenas fácil de embrulhar as chamadas de bloqueio em seu próprio segmento. Torcido é bom para código de rede em grande escala.
  2. Você misturar Torcido, http2lib ou código tomada no mesmo projeto?
    • Claro. Mas basta lembrar que torcido é único segmento, e que qualquer chamada de bloqueio em torcida irá bloquear o motor inteiro.
  3. é torcido pythônico para a maioria das bibliotecas (que é mais complexo do que as alternativas, introduzir uma dependência para um pacote não-padrão ...)?
    • Há muitos fanáticos torcida que vai dizer que pertence na biblioteca padrão Python. Mas muitas pessoas podem implementar código de rede decente com asyncore / asynchat.

Outras dicas

asychronous-programação-em-python-twisted , você terá para decidir se dependendo de uma biblioteca não-padrão (externo) se adapta às suas necessidades. Observe a resposta por @Glyph , ele é o fundador do projeto Twisted, e pode autoritariamente responder a qualquer questão relacionada Twisted.

No núcleo de bibliotecas como Torcido, a função no circuito principal não é o sono, mas uma chamada de sistema operacional como o select () ou poll (), como exposto por um módulo como o módulo selecione Python. Eu digo "como" selecionar, porque esta é uma API que varia muito entre as plataformas, e quase todos os GUI Toolkit tem sua própria versão. Torcido atualmente fornece uma interface abstrata para 14 diferentes variações sobre esse tema. A coisa comum que tal API fornece é fornecer uma maneira de dizer "Aqui está uma lista de eventos que eu estou esperando. Ir dormir até que um deles acontece, então acordar e me diga qual deles era. "

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