【问题标题】:why celery is creating new queue in rabbit mq?为什么 celery 在rabbitmq 中创建新队列?
【发布时间】:2020-10-31 16:20:29
【问题描述】:

发送到 celery 的函数是使用装饰器指向我想使用的队列:

@app.task(queue="celery")
def compare_from_database(row_id=None, database_name=None, table_name=None):
    ....

我创建了一个脚本来检查队列中还有多少任务,只是命令的一个 while 循环

 rabbitmqctl list_queues

并用“celery”解析行

但是由于 celery 创建了随机队列,所以我不能使用它。为什么 celery 会创建新队列而不是真正将其发送给我想要的队列?

【问题讨论】:

    标签: python rabbitmq celery psycopg2 psql


    【解决方案1】:

    我猜你正在使用rpc 作为你的celery_result_backend。 您可以查看此链接 - https://tech.labs.oliverwyman.com/blog/2015/04/30/making-celery-play-nice-with-rabbitmq-and-bigwig/,他解释说 RPC 后端将为任务结果创建队列。


    您可以在此处查看我的答案以获取有关result-backend 的更多说明=> https://stackoverflow.com/a/62069822/6490744

    【讨论】:

    • 非常有趣,即使使用 apply_async([args], queue="celery") 仍然没有进入该队列,那么为什么我们有带有 @app.task(queue="celery" 的装饰器“)?所以在apply_async中传递队列,或者装饰器不起作用=(我将使用列调用Done使函数更新postgree,相反,感谢这篇文章,非常有趣。
    • 只需删除rpc 后端,然后它应该向右queue
    • 如果你想将结果存储在postgres中,你可以使用postgres作为result-backend,非常简单。
    • Sowjanya,celery 可以有rabbit,redit,现在通过那个教程,我了解到也可以使用postgres =),是的,我知道你的意思是让rabbit 作为代理并将结果存储在postgres 作为数据库来存储结果。
    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多