【问题标题】:Celery: Running tasks when they are modularCelery:在模块化时运行任务
【发布时间】:2013-06-11 10:02:14
【问题描述】:

我正在使用 celery 在 django 中运行计划任务。我的任务在 tasks.py 中。 如果我把我的功能分解成这样的小功能:

@periodic_task(run_every=crontab()) 
def run_something():
    print 'a'
    run_something_else('a')

def run_something_else(a)
   print a

现在celery.log 表示只执行了run_something 任务。它以某种方式不执行run_something_else()
有人可以解释这种行为吗?

【问题讨论】:

  • run_something_else 不是一个任务,它只是一个函数,Celery 没有代理它的执行,也不会知道。
  • @ThomasOrozco 哦,好的!但那我该如何让我的任务模块化呢?
  • 你想在这里实现什么?目前尚不清楚您的目标是什么。
  • 这只是一个sn-p来解释。我的任务很大并且被写入多个函数。一个函数将参数传递给另一个函数,依此类推。
  • 这里run_something_else中的代码仍然会运行。它不会被报告为Task,因为 Celery 不知道它的执行情况。如果需要,可以这样做以将一项任务分解为多个功能。如果您希望任务执行的步骤再次通过代理,请创建一个新任务并.delay()它。

标签: python django celery django-celery


【解决方案1】:

您可以按照here 所述链接您的任务。但这是可用的形式版本 3.0. 不确定您是否正在寻找这个。

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 2013-12-16
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2017-02-02
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多