【问题标题】:Separating celery consumer and producer分离芹菜消费者和生产者
【发布时间】:2013-11-07 18:07:35
【问题描述】:

我希望我写的电子邮件服务与我的烧瓶应用程序完全分离。我正在使用芹菜和rabbitmq。所以我想知道有没有一种方法可以配置 celery,以便在一个项目中我拥有将消息发送到队列(生产者)的 Flask 应用程序。在另一个项目中,我运行了一个 celery 实例来监听消息并执行任务(消费者)。我仍然对通信将如何工作感到困惑?我是否将 API(发送电子邮件)放在我的烧瓶应用程序或 celery 项目中?最终,我希望在不同的 EC2 实例中拥有 Flask 应用程序和 Celery 实例——用 rabbitmq 作为消息代理。

感谢您的帮助!

【问题讨论】:

    标签: python flask rabbitmq celery


    【解决方案1】:

    您可以使用 Celery 的 send_task 函数通过 RabbitMQ 使用任务名称将任务发送给工作人员。您仍然需要导入拥有 celery 应用程序的模块:

    如果任务没有在当前进程中注册你可以使用 send_task() 改为按名称调用任务。

    例子:

    from yourmodule.yourapp import celery
    celery.send_task("yourtasksmodule.yourtask", args=["Hello World"])
    

    【讨论】:

    • 我想知道是否可以在不导入我的模块的情况下做到这一点(因为我计划将它放在不同的服务器实例中)。由于 celery 需要在管道的两侧(rabbitmq),我的问题是 - 我可以从 celery.Task 子类化 - 这样在一方面我将有方法来定义调用任务时会发生什么(发送消息),另一方面做实际的任务?
    • @user2216194 你能解释一下你是如何让它工作的吗?我遇到了和你一样的问题
    • Tutorial 可以帮忙
    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2015-07-31
    相关资源
    最近更新 更多