为django添加异步功能

时间:2015-04-22 03:50:20

标签: python django asynchronous websocket

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

  1. 使用一些处理异步的django plugin
  2. 为了处理异步部分而引发一个新的龙卷风服务器(然后让它学习我的django用户/身份验证模型)
  3. 将龙卷风嵌入django(如this
  4. 你的建议是什么?或者其他我没想过的东西?

1 个答案:

答案 0 :(得分:0)

我建议使用这个:

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

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

如果你需要运行异步任务,@ Randi建议使用Celery是一个非常好的建议:芹菜很棒。将其与django-websocket-redis相结合,您可以执行长时间运行的异步任务,并在任务运行时为您的用户提供实时更新。

另一种可能不太合适的解决方案是每隔2-5秒从角度客户端轮询服务器以获取更改/通知。但是,这是“旧学校”方法,可能会给您的服务器增加很多负载。这种方法可以节省管理额外服务的开销,如果你的用户数量很少,可能会有更好的选择。