【问题标题】:need some help getting my head around django-celery and an amqp message broker需要一些帮助来了解 django-celery 和 amqp 消息代理
【发布时间】:2012-03-24 04:12:51
【问题描述】:

我在 Django 中工作并安装了 django-celery。 celery 守护进程正在我的本地服务器上运行并接受/执行任务。

我的最后一部分是创建一个任务,将消息发送到另一台服务器上的 AMPQ 代理。代理配置在我的 settings.py 文件中,但我不清楚如何连接到 AMPQ 服务器并构造消息(带有标头和 json 编码的有效负载。

现在我开始怀疑我是否需要运行 celery 只是为了向外部 AMQP 代理发送消息。

更新:

我正在使用 Kombu 发布到 AMQP 代理,看来我可以使用正确的 exchange、routing_key 和 exchange_type 成功建立 Publisher 连接。我的消息必须包含一个带有三个键值对的标头和一个 json 编码的有效负载。我不清楚如何构建消息。

【问题讨论】:

    标签: django amqp django-celery kombu


    【解决方案1】:

    Celery 具有客户端-服务器架构。客户端向代理发布消息,服务器端从代理消费消息。

    你不需要运行 celery 来发布消息。要向代理发送消息,只需在 settings.py 配置文件中配置 BROKER_URL 选项并调用任务的 delay/apply_async 方法。 Celery 将构建并发布所需的消息。

    但您需要在服务器端启动 Celery worker(使用 celeryd 或 celeryd_multi 命令)以使用来自代理的消息。

    【讨论】:

    • 你能给我指出一个关于如何构建消息的好入门吗?
    • github.com/ask/celery/blob/master/celery/app/amqp.py 如果您打算手动构造消息,为什么要使用 celery?
    • 这是我困惑的根源。我需要将消息发送到 amqp 消息代理并为 django 进行研究,我被引导到了 celery 路径。虽然这是一个有趣的转移,但我真的只需要 Kombu 手动发送消息。
    • 从 celery.messaging 导入 TaskPublisher 后,我收到一个错误,即 'TaskPublisher' 对象没有属性 'apply_async'
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 2016-07-14
    • 2012-02-10
    • 2011-03-25
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多