首先,让我谈谈 Nevow 已死的看法。包含 Nevow 代码(以及其他 Divmod 项目)的启动板项目是divmod.org on launchpad。硬件故障严重影响了该项目的公众形象,但它仍然存在,其他东西(如 wiki 和门票)正在恢复过程中。目前并没有进行很多积极的维护工作,但这主要是因为它对大多数用户来说已经足够好了;有很多人依赖于 Nevow,如果它停止工作,他们会非常沮丧。这些人拥有继续维护它所必需的技能和经验。所以,虽然它现在没有被积极推广,但我认为它不太可能消失。
我对 Nevow 的长期希望如下。(我会说“计划”,但由于我最近没有积极参与它的维护,这真的取决于那些人。)首先,我想提取它的模板设施并将它们移动到扭曲中。网。用于 Nevow 的干净、未弃用的 API 主要由nevow.page.Element和各种加载器覆盖. Twisted 本身想在一些地方生成 HTML,这些工具可能很有用。然后我们应该扔掉 Nevow 的“appserver”和资源模型部分。这些大多只是针对 twisted.web 的错误修复或更改的随机集合,其中大部分以某种形式存在于 twisted.web2 中,因此无论如何都会回滚到 twisted.web 中,或者已经在那里应用。最后是雅典娜的问题。虽然双向通信是 Twisted 的强项之一,但 Athena 本身就是一个庞大的、庞大的 JavaScript 代码库,应该仍然是它自己的项目。
第三,关于主要问题,鉴于这些信息,您现在应该做什么?
一般来说,我会说“使用nevow”。这个项目有一些缺陷,它需要更多的文档,它的 API 需要被修剪以消除一些旧的和损坏的东西,但它仍然非常有用并且非常活跃。为了弥补稍微稀疏的文档,您可以加入 Freenode 上的#divmod
或#twisted.web
频道以获得帮助。如果您在可能的情况下通过提供补丁来提供帮助,您会发现在那里您会得到很多热情的帮助。当您忽略不推荐使用的部分时,Nevow 有一个非常小、理智、扭曲的友好 API。我上面概述的 Nevow 发展计划的后果实际上非常小。如果它发生了,它对你意味着什么也就是说,在 1 到 5 年内,当您升级到新版本的 Twisted 时,您会收到一些弃用警告,import
将代码中的某些行更改from nevow.page import ...; from nevow.loaders import ...
为一些假设的新内容,例如from twisted.web.page.element import ...; from twisted.web.page.templates import ...
,或类似的东西。在那之后的大多数 API 应该保持不变,而且高级概念绝对不应该有太大变化。
使用 Nevow 的主要优势是它是异步友好的,并且可以在主线程中呈现页面而不会阻塞。此外,您还可以通过 Athena 免费获得真正简单的 COMET。
你也可以使用 Django。这不是那么异步友好,但它显然有更广泛的支持基础。然而,“不像异步友好”并不意味着“难以使用”。你可以通过WSGIResource在twisted.web 中运行它,并且只需在你的Django 应用程序中使用blockingCallFromThread 来调用任何返回Deferred 的Twisted API,它应该足够强大,可以做任何你想做的事情。如果您对如何实例化 Twisted Web 资源以结合 Twisted Web 和 Django 有更具体的问题,您可能应该在它自己的 Stack Overflow 问题中提出。