扭曲(异步服务器)与Django(或任何其他框架)

问题描述 投票:14回答:6

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

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

python django asynchronous twisted real-time
6个回答
16
投票

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

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


18
投票

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

编辑以反映评论:sos-skyl


5
投票

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

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

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


3
投票

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


0
投票

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.