gpt4 book ai didi

django - 乔布斯向错误的 celery 开火

转载 作者:行者123 更新时间:2023-12-04 05:13:03 26 4
gpt4 key购买 nike

我使用 django celery 和 rabbitmq 作为我的经纪人( guest 兔子用户在本地机器上具有完全访问权限)。我有一堆项目都在他们自己的 virtualenv 中,但最近其中 2 个需要 celery。我有一个rabbitmq 实例正在运行

(project1_env)python manage.py celery worker
normal celery stuff....
[Configuration]
broker: amqp://guest@localhost:5672//
app: default:0x101bd2250 (djcelery.loaders.DjangoLoader)

[Queues]
push_queue: exchange:push_queue(direct) binding:push_queue

在我的另一个项目中
(project2_env)python manage.py celery worker
normal celery stuff....
[Configuration]
broker: amqp://guest@localhost:5672//
app: default:0x101dbf450 (djcelery.loaders.DjangoLoader)

[Queues]
job_queue: exchange:job_queue(direct) binding:job_queue

当我在 project1 代码中运行任务时,它会在 push_queue 中触发 project1 celery。问题是当我在 project2 中工作时,即使 celery 没有在 project1 上运行,任何任务也会尝试在 project1 celery 中触发。

如果我启动 project1_env 并启动 celery,我会得到
Received unregistered task of type 'update-jobs'.

如果我运行 list_queues在 rabbit 中,它显示了所有队列
...
push_queue 0
job_queue 0
...

我的环境设置和 CELERYD_CHDIRCELERY_CONFIG_MODULE都是空白。

我尝试过的一些事情:
  • 清除 celery
  • 在rabbitmq上强制重置
  • 本答案中概述的 rabbitmq 虚拟主机:Multi Celery projects with same RabbitMQ broker backend process
  • 移动 django celery 设置并将 CELERY_CONFIG_MODULE 设置为正确的设置
  • 将两个项目中的 CELERYD_CHDIR 设置为正确的目录

  • 这些东西都没有阻止 project2 任务尝试在 project1 celery 中工作。

    我在 Mac 上,如果这有所作为或有帮助的话。

    更新

    设置不同的虚拟主机使其一切正常。我刚刚配置错了。

    最佳答案

    如果您要为两个 Celery 实例使用相同的 RabbitMQ 实例,您将需要使用虚拟主机。这就是我们使用的并且有效。你提到你已经尝试过了,但你的经纪人 URL 都是 amqp://guest@localhost:5672// ,没有指定虚拟主机。如果两个 Celery 实例都连接到同一主机和虚拟主机,它们将在同一组队列中生产和消费。

    关于django - 乔布斯向错误的 celery 开火,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654274/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com