【问题标题】:Where to put message queue consumer in Django?在 Django 中将消息队列消费者放在哪里?
【发布时间】:2010-11-09 21:41:37
【问题描述】:

我在 Django 项目中将 Carrot 用于消息队列,并遵循 the tutorial,它工作正常。但是该示例在控制台中运行,我想知道如何在 Django 中应用它。我从models.py 中的一个模型调用的发布者类,所以没关系。但我不知道把消费类放在哪里。

由于它只是与 .wait() 一起坐在那里,我不知道我需要在什么时候或在哪里实例化它,以便它始终运行并侦听消息!

谢谢!

【问题讨论】:

    标签: python django message-queue rabbitmq amqp


    【解决方案1】:

    在您从教程中引用的示例中,消费者只是一个长时间运行的脚本。它从队列中弹出一条消息,执行一些操作,然后调用 wait 并基本上进入睡眠状态,直到另一条消息进来。

    此脚本可以在您的帐户下的控制台上运行,也可以配置为 unix 守护程序或 win32 服务。在生产中,您需要确保如果它死了,它可以重新启动,等等(守护进程或服务在这里更合适)。

    或者您可以取出等待调用并在 Windows 调度程序下运行它或作为 cron 作业运行。因此它每 n 分钟或某事处理一次队列并退出。这实际上取决于您的应用程序要求、队列填满的速度等。

    这有意义还是我完全错过了您的要求?

    【讨论】:

      【解决方案2】:

      如果你正在做的是处理任务,请查看 celery:http://github.com/ask/celery/

      【讨论】:

      • 谢谢,asksol。当我之前问过这个问题时:stackoverflow.com/questions/1102254/… 答案似乎是在不同机器上运行计划任务时使用 celery。我不打算使用不同的机器,但我确实想将任务放入队列中。你仍然认为芹菜适合使用而不是胡萝卜吗?
      • 当然。机器数量无关紧要。你可以在同一台机器上运行 celeryd。如果这在某些时候还不够,您可以添加更多服务器处理任务。
      猜你喜欢
      • 1970-01-01
      • 2013-08-08
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-03-08
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多