扭曲和网络编程该走哪条路?

2024-01-12

因此,我在几个月前编写了这个扭曲的应用程序,现在我想使用基于 Web 的用户界面进行扩展以进行配置。

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

另一个想法是使用 Django。无论如何,我在配置界面中都需要用户身份验证和权限,而且我对此非常熟悉。 (我从未与 Nevow 或twisted.web 合作过) 但连接这两个世界似乎相当困难,我所能找到的只是在 Twisted 中运行 Django 和 WSGI 的示例。

在 Twisted 之上是否还有其他可能拥有漂亮的用户界面?


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

我对 Newow 的长期希望如下。 (我会说“计划”,但由于我最近没有积极参与其维护,这实际上取决于那些参与维护的人。)首先,我想提取其模板设施并将其移至twisted。网络。 Nevow 的干净、未弃用的 API 大部分由newow.page.Element http://python.net/crew/mwh/nevowapi/nevow.page.Element.html以及各种loaders http://python.net/crew/mwh/nevowapi/nevow.loaders.html。 Twisted 本身希望在一些地方生成 HTML,这些工具可能很有用。然后我们应该扔掉 Nevow 的“应用程序服务器”和资源模型部分。这些大多只是twisted.web 的错误修复或更改的随机集合,其中大部分以某种形式存在于twisted.web2 中,因此无论如何都会回滚到twisted.web 中,或者已经应用在那里。最后是雅典娜的问题。虽然双向通信是 Twisted 的优势之一,但 Athena 本身就是一个庞大、庞大的 JavaScript 代码库,可能应该保留自己的项目。

第三,回到主要问题,鉴于这些信息,您现在应该做什么?

一般来说,我会说“使用 newow”。该项目有一些缺点,它需要更多的文档,它的 API 需要修改以消除一些旧的和损坏的东西,但它仍然非常有用并且非常活跃。为了弥补稍微稀疏的文档,您可以加入#divmod or #twisted.webFreenode 上的频道以获取帮助。如果您尽可能提供补丁来提供帮助,您会发现您会得到很多热情的帮助。当您忽略已弃用的部分时,Nevow 拥有一个相当小、理智、扭曲的友好 API。我上面概述的 Nevow 发展计划的结果实际上非常小。如果它真的发生了,这意味着什么you是,在 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。这不太适合异步,但显然确实有更广泛的支持基础。然而,“不那么异步友好”并不意味着“难以使用”。您可以通过以下方式在twisted.web 中运行它WSGI资源 http://twistedmatrix.com/documents/10.2.0/api/twisted.web.wsgi.WSGIResource.html, 并简单地使用blockingCallFromThread http://twistedmatrix.com/documents/10.2.0/api/twisted.internet.threads.html在您的 Django 应用程序中调用任何返回 Deferred 的 Twisted API,它应该足够强大,可以完成您想要的任何操作。如果您对如何实例化 Twisted Web 资源以结合 Twisted Web 和 Django 有更具体的问题,您可能应该在自己的 Stack Overflow 问题中提问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扭曲和网络编程该走哪条路? 的相关文章

随机推荐