【问题标题】:Celery's inspect unstable behaviour芹菜的检查不稳定的行为
【发布时间】:2014-07-10 14:42:10
【问题描述】:

我得到了带有 RabbitMQ 后端的 celery 项目,该项目严重依赖于检查计划任务。我发现下面的代码大部分时间什么都不返回(当然还有定时任务):

i = app.control.inspect()
scheduled = i.scheduled()
if (scheduled):
     # do something

这段代码也从其中一项任务中运行,但我认为没关系,我从交互式 python 命令行得到了相同的结果(有一些例外,见下文)。

同时,celery -A <proj> inspect scheduled 命令永远不会失败。另外,我注意到,当第一次从交互式 python 命令行调用时,这个命令也永远不会失败。大多数连续的i.scheduled() 调用都没有返回任何内容。

i.scheduled() 只在第一次调用时保证结果?

如果是这样,为什么以及如何从任务中检查计划任务?运行专门的工作人员并在每项任务后重新启动它?对于这种微不足道的任务似乎有点过头了。

请解释一下,如何正确使用此功能。

【问题讨论】:

标签: python celery


【解决方案1】:

这是由 Celery 应用程序内部的一些奇怪问题引起的。要从 Inspect 对象重复方法,您必须创建新的 Celery 应用实例对象。

这里是小sn-p,可以帮到你:

from celery import Celery

def inspect(method):
    app = Celery('app', broker='amqp://')
    return getattr(app.control.inspect(), method)()

print inspect('scheduled')
print inspect('active')

【讨论】:

  • 好像你的 sn-p 工作:)thanx。是的,这是重复的,我用谷歌搜索了“芹菜检查不返回任何内容”,但没有找到。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 2019-12-29
  • 2011-01-27
  • 2019-08-02
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多