【问题标题】:Embed a celery worker in my own code在我自己的代码中嵌入一个芹菜工人
【发布时间】:2013-04-19 15:49:55
【问题描述】:

我有一个需要某种协调器组件的服务。协调器将管理需要分配给用户的实体,如果用户没有及时响应,则从用户那里取走,如果用户响应,也会处理用户响应。协调员还需要联系消息服务以通知用户他们有事情要处理。

我希望协调器是一个单线程进程,因为在使用的前几年预计负载不会太大,我宁愿将所有并发问题推迟到我真正需要的时候处理它们(如果有的话)。

协调器将从 Django 网络服务器接收新实体和用户响应。我认为处理这个问题的最简单方法是使用 Celery 任务 - 网络服务器只是启动协调器在自己的时间消耗的任务。

为此,我需要协调器包含一个 celery worker,并用我自己的版本替换当前的 worker 主循环(检查代理是否有新消息并处理调度)。

它的可行性如何?另一种方法是避免使用 Celery,直接使用 RabbitMQ。我不想那样做。

【问题讨论】:

  • 能否提供更详细的信息。我不明白为什么你真的需要替换主循环。
  • 我希望worker处理传入的任务,以及各种调度事件。

标签: python django rabbitmq celery


【解决方案1】:

将此名称替换为:coordinator 为 rabbitmq(或其他一些 broker kombu 支持),users 为 celery workers。

我很确定您只需配置 celery/kombu 和 rabbitmq 即可完成您需要的所有工作(以及更多),而无需编写太多(如果有的话)代码行。

小记:Celery 具有定时任务功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 2015-05-13
    • 2014-08-17
    • 2017-07-29
    • 2020-03-19
    • 1970-01-01
    • 2023-03-06
    • 2017-08-15
    相关资源
    最近更新 更多