Pregunta

Muchas bibliotecas pitón, incluso recientemente escritos queridos, utilizar httplib2 o la interfaz de socket para realizar tareas de red.

Estas son obviamente más fácil de codificar en que Twisted debido a su naturaleza bloqueo, pero creo que esto es un inconveniente cuando su integración con otros códigos, uno en especial GUI. Si quieres escalabilidad, concurrencia o integración interfaz gráfica de usuario, evitando múltiples hilos, trenzado es entonces una elección natural.

Así que estaría interesado en las opiniones en las materias:

  1. En caso de que el nuevo código de red (con la excepción de las herramientas de línea de comandos pequeña) se escribe con Twisted?
  2. ¿Le mezclar trenzado, http2lib o código de socket en el mismo proyecto?
  3. ¿Es Pythonic torcida para la mayoría de las bibliotecas (es más compleja que otras alternativas, introducir una dependencia de un paquete no estándar ...)?

Editar por favor hágamelo expresar esto de otra manera. ¿Se siente a escribir el nuevo código de la biblioteca con el trenzado puede agregar una barrera para su adopción? Twisted tiene beneficios obvios (especialmente portabilidad y escalabilidad como se indica por gimel), pero el hecho de que no es una biblioteca núcleo pitón puede ser considerado por algunos como un inconveniente.

¿Fue útil?

Solución

  1. En caso de nuevo código de red (con la excepción de pequeñas herramientas de línea de comandos) escribirse con Twisted?
    • Tal vez. Realmente depende. A veces es sólo lo suficientemente fácil para envolver las llamadas de bloqueo en su propio hilo. Twisted es bueno para el código de red a gran escala.
  2. ¿Le mezclar trenzado, http2lib o zócalo código en el mismo proyecto?
    • Claro. Pero sólo recuerda que es solo hilo trenzado, y que cualquier llamada de bloqueo en Twisted bloqueará todo el motor.
  3. ¿Es Pythonic torcida para la mayoría de las bibliotecas (es más compleja que otras alternativas, introducir una dependencia de un paquete no estándar ...)?
    • Hay muchos fanáticos torcidos que decir que pertenece en la biblioteca estándar de Python. Sin embargo, muchas personas pueden implementar código de red decente con asyncore / asynchat.

Otros consejos

Vea asíncrono de programación-en-python-trenzado , tendrá para decidir si en función de una biblioteca no estándar (externa) se adapte a sus necesidades. Tenga en cuenta la respuesta de @Glyph , él es el fundador del proyecto Twisted, y puede responder con autoridad cualquier <=> pregunta relacionada.

  

En el núcleo de las bibliotecas como Twisted, la función en el bucle principal no es sueño, sino una llamada al sistema operativo como select () o poll (), como se expone por un módulo como el módulo de selección de Python. Digo "así como" seleccionar, ya que esta es una API que varía mucho entre plataformas, y casi cada conjunto de herramientas GUI tiene su propia versión. Actualmente trenzado proporciona una interfaz abstracta a 14 variaciones diferentes sobre este tema. Lo común que proporciona una API es proporcionar una manera de decir "Aquí hay una lista de eventos que estoy esperando. Ir a dormir hasta que uno de ellos sucede, entonces se despierta y dime cuál de ellos era. "

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top