É torcido um httplib2 / socket substituição?
-
21-08-2019 - |
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:
- novo código de rede deve (com exceção de ferramentas de linha de comando pequena) ser escrito com torcida?
- Você misturar Torcido, http2lib ou código tomada no mesmo projeto?
- é 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.
Solução
- 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.
- 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.
- é 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. "