Django中消息队列消费者放在哪里?

2 投票
2 回答
2849 浏览
提问于 2025-04-15 12:50

我在一个Django项目中使用Carrot作为消息队列,按照这个教程的步骤做,运行得很好。不过,示例是在控制台里运行的,我想知道怎么把它应用到Django里。我在models.py里从我的一个模型调用了发布者类,这没问题。但是我不知道消费者类该放在哪里。

因为它只是静静地等待着,使用的是.wait(),我不知道应该在什么时机或者什么地方去实例化它,这样它才能一直运行并监听消息!

谢谢!

2 个回答

0

如果你正在处理任务的话,可以看看celery这个工具:http://github.com/ask/celery/

5

在你提到的教程例子中,消费者其实就是一个长时间运行的脚本。它从队列中取出一条消息,处理完后就调用等待,然后基本上就“睡觉”了,直到有新的消息进来。

这个脚本可以直接在你的账户下的控制台运行,或者配置成一个Unix守护进程(daemon)或Windows服务。在实际应用中,你会希望确保如果这个脚本崩溃了,它能够自动重启等等(这时候用守护进程或服务会更合适)。

另外,你也可以去掉等待的调用,让它在Windows任务调度器下运行,或者作为一个定时任务(cron job)。这样的话,它就会每隔一段时间处理一次队列,然后退出。具体怎么做还得看你的应用需求,比如队列填满的速度等等。

这样解释清楚了吗?还是我完全没理解你的问题?

撰写回答