Primero, déjame abordar la percepción de que Nevow está muerto. El proyecto de launchpad que contiene el código para Nevow (y el resto de los proyectos de Divmod) es divmod.org on launchpad. Una falla de hardware ha impactado gravemente la presencia pública del proyecto, pero todavía está allí, y otras cosas (como el wiki y las entradas) están en proceso de recuperación. No hay mucho trabajo de mantenimiento activo en curso ahora, pero eso es principalmente porque es lo suficientemente bueno para la mayoría de sus usuarios; hay mucha gente que depende de Nevow y estaría muy molesta si dejara de funcionar. Esas personas tienen las habilidades y la experiencia necesarias para continuar manteniéndolo. Entonces, si bien no se está promocionando activamente en este momento, creo que es poco probable que desaparezca.
Mi esperanza a largo plazo para Nevow sería la siguiente. (Yo diría "plan", pero dado que no he estado involucrado activamente con su mantenimiento últimamente, esto depende de quienes sí lo están.) Primero, me gustaría extraer sus instalaciones de plantillas y moverlas a retorcidas. web. La API limpia y no obsoleta para Nevow está cubierta principalmente por nevow.page.Element y varios loaders.Twisted sí mismo quiere generar HTML en algunos lugares y estas instalaciones podrían ser útiles. Entonces debemos descartar el "servidor de aplicaciones" y las partes del modelo de recursos de Nevow. En su mayoría, se trata simplemente de una colección aleatoria de correcciones de errores o alteraciones de twisted.web, la mayoría de las cuales estaban presentes de alguna forma en twisted.web2 y, por lo tanto, se volverán a twisted.web o se aplicarán allí. Finalmente está la cuestión de Atenea. Si bien la comunicación bidireccional es una de las fortalezas de Twisted, Athena es en sí misma una base de código JavaScript gigantesca y en expansión, y probablemente debería seguir siendo su propio proyecto.
En tercer lugar, a la pregunta principal, dada esta información, ¿qué debe hacer ahora?
Hablando en general, diría "use nevow". El proyecto tiene algunas verrugas, necesita más documentación y su API necesita ser recortada para eliminar algunas cosas viejas y rotas, pero todavía es bastante útil y está muy viva. Para compensar la documentación escasamente escasa, puede unirse a los canales #divmod
o #twisted.web
en Freenode para obtener ayuda. Si ayudas aportando parches donde puedas, encontrarás que recibirás mucha ayuda entusiasta allí. Cuando ignoras las partes obsoletas, Nevow tiene una API amigable bastante pequeña, cuerda y retorcida. La consecuencia del plan para la evolución de Nevow que describí anteriormente es en realidad bastante mínima. Si incluso sucede, lo que significa para es es, en 1-5 años, cuando actualiza a una nueva versión de Twisted, obtendrá un par de advertencias de depreciación, cambie algunas líneas import
en su código de from nevow.page import ...; from nevow.loaders import ...
a algo nuevo hipotético como from twisted.web.page.element import ...; from twisted.web.page.templates import ...
, o somesuch. La mayor parte de la API pasada ese punto debe permanecer igual, y definitivamente los conceptos de alto nivel no deberían cambiar mucho.
La principal ventaja que obtienes al usar Nevow es que es fácil de usar y puede mostrar páginas en tu hilo principal sin bloquear cosas. Además, puedes obtener COMET realmente fácil de forma gratuita con Athena.
También puede usar Django. Esto no es tan fácil de usar, pero obviamente tiene una base de apoyo más amplia. Sin embargo, "no es tan fácil de usar" no significa "difícil de usar". Puede ejecutarlo en twisted.web a través de WSGIResource, and simply use blockingCallFromThread en su aplicación Django para invocar cualquier API retorcida que devuelva un aplazado, que debería ser lo suficientemente potente como para hacer casi cualquier cosa que desee. Si tiene una pregunta más específica sobre cómo crear instancias de recursos web Twisted para combinar Twisted Web y Django, probablemente debería formularla en su propia pregunta de Desbordamiento de pila.
¿Ya investigaste a CherryPy? –
La herramienta [BuildBot] (http://trac.buildbot.net/wiki/ScreenShots) está escrita con Twisted y tiene algunos buenos resultados de página web, podría ser un buen lugar para aprender. – sarnold