15

我有一个 Django 站点的一小部分,它保持两个用户之间的主持聊天会话的状态。基本上,第一个用户说话 3 分钟(其他人都不能),然后第二个用户说话,然后停顿 30 秒,这个过程再重复一次。我目前正在使用数据库和“RoomState”模型来管理房间的当前状态(谁可以说话等)。状态转换受到客户端每 10 秒向我的一个视图发送“ping”AJAX POST 消息的影响,该视图检查是否到了更改状态的时间。

这行得通,但绝对感觉很hacky。我想知道是否有比 django-celery + rabbitmq 更轻量级的东西来管理计时器上的短期后台任务。我意识到 web/Django 的本质是无状态的,但我只是想看看是否有人有一个简单的建议来以更可靠的方式管理状态转换。

4

3 回答 3

20

这里是 django-utils 的作者,我建议尝试我的新项目Huey - 具有更丰富的功能集、更好的文档、更稳定并适用于任何 python 框架(包括 django)。 文档

于 2012-07-13T18:37:27.343 回答
7

我只知道Celery的一种更轻量级的替代品:django-utils 中的队列

另一种方法是直接使用subprocess模块,但您可能必须解决一些已经在Celerydjango-utils中解决的问题。

于 2012-01-04T17:55:06.470 回答
5

我推荐django-background-tasks。我已经在几个项目中使用过它,它作为一个简单的任务运行器做得非常好。在Django 的两勺中也推荐了它。

于 2015-11-06T22:05:39.000 回答