2009-11-22 25 views
11

Me gusta mucho Tornado y me gustaría usarlo con Python 3, aunque está escrito para Python versiones 2.5 y 2.6.Tornado y Python 3.x

Desafortunadamente, parece que la fuente del proyecto no viene con un conjunto de pruebas. Si entiendo correctamente la parte de WSGI no sería tan fácil de transportar, ya que su especificación no está lista para Python 3 yet (?), pero estoy bastante interesado en las características asincrónicas de Tornado, por lo que la compatibilidad con WSGI no es mi principal preocupación, aunque sería agradable.

Básicamente me gustaría saber qué mirar/prestar atención cuando trato de portar o si ya hay puertos/horquillas (no pude encontrar ninguno usando google o navegando github, aunque podría haberme perdido algo) .

+0

circuitos (http://bitbucket.org/prologic/circuits) ha apoyado Python 3 desde hace algún tiempo y es compatible con 2.6, 2.7, 3.1, 3.2 y 3.3 –

Respuesta

25

en primer lugar, quiero pedir disculpas por una respuesta a un tema obsoleto, pero una vez que encontré este tema a través de Google, quiero actualizar la información importante!

¡En el Tornado 2.0 se agrega soporte para Python 3.2!

https://github.com/facebook/tornado/blob/master/setup.py

http://groups.google.com/group/python-tornado/browse_thread/thread/69415c13d129578b

+3

Esto es exactamente por qué SO es mejor que los foros. El tema no se desactualiza, solo puede actualizarlos. Una vez que se lanza 2.0, la pregunta en sí debería actualizarse para notar esto. –

+0

¡Gracias por tu actualización! – tosh

13

El software sin un conjunto de pruebas decente es legacy software - ¡incluso si se ha lanzado ayer! -) - por lo que el primer paso importante es comenzar a construir un conjunto de pruebas; Recomiendo el libro de Plumas en la URL, pero puede comenzar con this PDF, que es un ensayo, también de Plumas, que precede al libro y resume una de las principales ideas y prácticas centrales del libro.

Una vez que hacer tienen el inicio de una serie de pruebas, se ejecuta con Python 2.6 y una bandera -3 para advertirle de las cosas 2to3 puede tropezar en; una vez arreglados, es momento de probar el 2to3 y probar el paquete de prueba con Python 3. Sin duda tendrá que seguir reforzando el conjunto de pruebas a medida que avanza, y le recomiendo enviar regularmente todas las mejoras al código fuente abierto Tornado ascendente. proyecto - esas pruebas serán útiles para que necesite mantener o portar Tornado, después de todo, no solo para las personas interesadas en Python 3, entonces, con suerte, puede obtener seguidores y más y más contribuidores al conjunto de pruebas .

No puedo creer que las personas son la liberación de grandes proyectos de código abierto, en el 2009 !!!, sin de pruebas dignas, pero te estoy confiando en que esto es precisamente lo que los Tornadoers han hecho ...

+0

buenos comentarios Alex : es una pena porque el código Tornado es muy limpio, he estado jugando un poco con él últimamente.Es curioso que fue creado por el equipo que dirige uno de los sitios web más grandes del planeta hoy en día y ¡no pensaron en escribir pruebas! +1 – jkp

+0

@jkp, o tal vez tienen un conjunto de pruebas internamente, pero prefieren no publicarlo, revelar información interna, p. Ej. la existencia de una infraestructura de prueba super-duper que les puede dar alguna ventaja competitiva; en tal caso, sería un compromiso comprensible (lanzar el código en sí mismo pero no las pruebas) ¡mejor que no liberar nada, después de todo! -). –

+0

O el conjunto de pruebas y/o su arnés están tan profundamente acoplados a una pila de otra infraestructura de Facebook que no pudieron justificar el esfuerzo de proporcionar un conjunto de pruebas sanitizado. –

4

Tornado es un buen marco web sobre algo que se parece al twisted, pero no tiene correcciones de errores ni características. Hice a port to twisted hace un tiempo que esencialmente acaba de eliminar el código.

Algunas de estas características son muy importante. Por ejemplo, si está haciendo WSGI, está bloqueando un marco web no bloqueante. Cosas malas sucederán. El marco web asíncrono de Twisted también tiene un contenedor WSGI, pero usa deferToThread para evitar que bloquee otras solicitudes. Todavía no es la forma correcta de escalar una aplicación, pero se desmorona mucho más lentamente.