为 django 添加异步功能

add asynchronous capabilities to django

我有一个成熟的生产 django-tastypie 服务器,带有 angular 客户端服务,我需要用实时数据更新客户端。我在考虑客户端的 websockets。 我的问题是哪种策略最适合服务器端:

  1. 使用一些处理异步的 django plugin
  2. 为了处理异步部分而创建一个新的 tornado 服务器(然后让它学习我的 django users/authentication 模型)
  3. 在 django 中嵌入龙卷风(如 this

你有什么建议?或者我没有想到的其他东西?

我建议使用这个:

https://github.com/jrief/django-websocket-redis

我在生产中使用过,效果很好;主要好处是它是非阻塞的并且与 Django 的身份验证系统集成(您可以通过 websocket 向特定用户、组或所有用户发送消息)。

@Randi 建议如果需要 运行 异步任务就使用 Celery,这是一个非常好的建议:Celery 非常好。将其与 django-websocket-redis 结合使用,您可以执行长 运行ning 异步任务,并为您的用户提供实时更新作为任务 运行s.

另一种但可能不太合适的解决方案是每 2-5 秒从您的 angular 客户端轮询服务器以获取 changes/notifications。但是,这是 "old school" 方法,可能会给您的服务器增加很多负载。这种方法可以节省管理额外服务的开销,如果您的用户数量较少,可能是更好的选择。