Python 使用twisted和web编程的方法是什么?

Python 使用twisted和web编程的方法是什么?,python,django,twisted,twisted.web,nevow,Python,Django,Twisted,Twisted.web,Nevow,所以,几个月前我编写了这个扭曲的应用程序,现在我想用一个基于web的用户界面来扩展它 Twisted网站推荐Nevow,但我不确定这是否是一个好的选择。他们的网站似乎已经关闭了一段时间,他们的launchpad页面在半年内没有看到任何更新。这个项目结束了吗? 此外,我在twisted web邮件列表上看到了关于将Nevow的部分移动到twisted.web的讨论。那么,对于新的开发项目,是否仍有建议 另一个想法是使用Django。在配置界面中,我需要用户身份验证和权限,我对此非常熟悉。(我从未使

所以,几个月前我编写了这个扭曲的应用程序,现在我想用一个基于web的用户界面来扩展它

Twisted网站推荐Nevow,但我不确定这是否是一个好的选择。他们的网站似乎已经关闭了一段时间,他们的launchpad页面在半年内没有看到任何更新。这个项目结束了吗? 此外,我在twisted web邮件列表上看到了关于将Nevow的部分移动到twisted.web的讨论。那么,对于新的开发项目,是否仍有建议

另一个想法是使用Django。在配置界面中,我需要用户身份验证和权限,我对此非常熟悉。(我从未使用过Nevow或twisted.web) 但似乎很难将这两个世界连接起来,我所能找到的只是在Twisted中使用WSGI运行Django的示例


在twisted的基础上还有没有其他的方法可以使用外观光滑的用户界面?

如果您希望在所使用的模板系统中支持延迟,Nevow仍然是一个不错的选择(它还没有死)。当涉及到复杂的URL调度时,它也比普通的TwistedWeb有一些优势。然而,它基本上只是一个模板系统。Twisted Web是真正的Web服务器。所以无论哪种方式,你都要使用TwistedWeb。事实上,即使您在Twisted Web的WSGI容器中使用Django,您仍然会使用Twisted Web。所以学习关于Twisted Web的知识不会伤害你

如果您要生成任意数量的HTML,那么您非常希望使用HTML模板库。至此,任何人都不应该使用原始字符串操作构建HTML。因此,如果您想使用其他Python HTML模板库(Cheetah、Quixote等)而不是Nevow,那就太好了!您只需要使用模板库获取一个字符串,以响应HTTP请求。Twisted Web不关心字符串来自何处


如果您确实想使用Django(或另一个基于WSGI的系统)做一些事情,那么您当然可以使用Twisted Web的WSGI支持在Twisted流程中部署它。您仍然可以在WSGI应用程序和其他Twisted代码之间进行交互,只要您稍加注意—WSGI应用程序在线程池中运行,Twisted API不是线程安全的,您必须使用或使用少量类似的API调用它们(特别是,有时是一个有用的更高级别工具).

首先,让我谈谈Nevow已死的看法。包含Nevow(以及其他Divmod项目)代码的launchpad项目是。硬件故障严重影响了项目的公众形象,但它仍然存在,其他东西(如wiki和罚单)正在恢复过程中。现在没有太多的主动维护工作在进行,但这主要是因为它对大多数用户来说已经足够好了;有很多人依赖Nevow,如果它停止工作,他们会非常沮丧。这些人拥有继续维护它所需的技能和经验。因此,虽然目前还没有积极推广,但我认为它不太可能消失

我对Nevow的长期希望如下。(我会说“计划”,但由于我最近没有积极参与它的维护,这真的取决于那些参与的人。)首先,我想提取它的模板设施,并将它们移动到twisted.web。Nevow的干净、未被弃用的API主要包含在。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的新版本时,你会收到一些弃用警告,从nevow.page import更改代码中的一些
import
行。。。;从nevow.loaders导入…到twisted.web.page.element导入的一些假设的新事物,如
。。。;从twisted.web.page.templates导入…
,或类似内容。大多数API在这一点上应该保持不变,高级概念肯定不会有太大的变化

使用Nevow的主要优点是它异步友好,可以在主线程中呈现页面,而不会阻塞内容。另外,你还可以用雅典娜免费获得COMET

您也可以使用Django。这不是非常异步友好,但它显然有更广泛的支持基础。然而,“并非如此