我需要帮助了解使用异步框架的优势是什么。假设我想开发一个简单的聊天网络应用程序。为什么我不能在Django框架中编写python代码进行长轮询,在那里我不会向服务器发送响应,直到有人输入新的消息。 Twisted提供了哪些功能,为聊天应用等实时应用提供了优势?

对不起,我显然对异步框架的需求感到困惑。

有帮助吗?

解决方案

异步服务器支持更多数量的并发客户端连接。当服务大量并发客户端时,更常规的服务器遇到线程和进程限制,特别是那些具有长期连接的客户端。异步服务器还可以提供更好的性能,因为它们可以避免例如线程上下文切换。

除了 Twisted 框架之外,Python的标准库中还有异步服务器构建块:以前的 asyncore asynchat ,但是现在还 asyncio

其他提示

首先关闭Django是一个用于编写Web应用程序的框架,因此它提供了ORM,html模板,它需要运行http服务器等.Twisted有助于编写比这更低级别的代码。您可以使用twisted来编写Django运行的http服务器。如果你使用Django,你只能使用http模型,扭曲它可以用你喜欢的任何协议进行通信,包括推送协议。因此,对于您的聊天示例,您可以获得更好地扩展的服务器,因为它可以将注释推送到已经使用django登录VS的人,每个客户端都必须重复轮询。

编辑以反映评论:sos-skyl

对我来说,最大的优势是Twisted为我提供了一个具有状态的应用程序,并且可以使用许多协议与许多不同的客户端进行通信。

对我来说,我的Twisted服务器与安装在监控电源使用情况的房屋和企业中的许多传感器进行通信。它存储数据并将最近的数据和状态保存在内存中的方便花花公子的python类中。来自django的xmlrpc请求获得此状态,并可向用户显示最新数据。我的Gridspy内容仍在开发中,因此your.gridspy.co.nz的实际网站有点预先发布。

最好的部分是,您只需要很少的代码来制作有效的服务器。为您完成了大量的工作。

在扭曲中,您可以实现自己的协议。 Django当然不能这样做。

您可以使用 WHIFF 而不是:)。查看 http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom 它使用json轮询循环与json来检查 用于服务器更新。你可能会做类似的事情 在Django,但我不知道为什么因为我放弃了Django。

顺便说一句:我希望将这个演示移到谷歌应用引擎上 作为一个更完整的服务时 我的生活平静下来。

如果您想查看集成Twisted和Django的某些来源,请查看 Yardbird

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top