【问题标题】:Celery keeps creating rabbitmq queues, pilling all overCelery 不断创建rabbitmq 队列,到处起球
【发布时间】:2014-07-23 12:34:32
【问题描述】:

在 django 1.6 中使用 celery (3.1.8 + ) 所有任务都定义为忽略结果(这是正确的语法吗?)

@shared_task(ignore_result=True)
def somefunc():
   pass

当我查看 rabbitmq 队列时,我看到越来越多由 celery 创建的队列,其名称如下:

19926fa9965e40c19ed9640c2b42ce1e

并包含一条消息(类似于以下内容):

correlation_id:19926fa9-965e-40c1-9ed9-640c2b42ce1e 优先级:0 交付模式:2 个标头:内容编码:二进制 content_type: application/x-python-serialize Payload 118 字节 编码:base64 gAJ9cQEoVQZzdGF0dXNxAlUHU1VDQ0VTU3EDVQl0cmFjZWJhY2txBE5VBnJlc3VsdHEFTlUHdGFza19pZHEGVSQxOTkyNmZhOS05NjVlLTQwYzEtOWVkOS02 NDBjMmI0MmNlMWVxB1UIY2hpbGRyZW5xCF11Lg==

如果我将 celery 设置为“始终渴望”模式,那么问题就解决了,但这显然不是生产服务器的好解决方案。

有什么线索吗?这是否连接到 ignore_result 选项?某处缺少一些任务?还有什么?

感谢您的帮助

【问题讨论】:

  • 到底是什么问题? 19926fa9965e40c19ed9640c2b42ce1e 在我看来是一个任务 ID,所以你只是看到了 rabbitmq 传输的任务。
  • @SébastienDeprez 听起来每条消息都有自己的队列,这不是预期的行为。

标签: django rabbitmq celery


【解决方案1】:

我不确定 django 或您的代码如何定义 @shared_task 装饰器,但您是否尝试过在其中显式设置队列?

@shared_task(ignore_results=True, queue="myexamplequeue")

每当您在somefunc 上调用.delay().apply_async() 时,这都会将消息应用到myexamplequeue

【讨论】:

  • 应该是ignore_result。或忽略结果?我注意到我的代码与两个版本混合在一起
  • 哦,我错过了。应该是ignore_result。请参阅docs on tasks
猜你喜欢
  • 2022-06-10
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2020-04-10
  • 2015-06-16
相关资源
最近更新 更多