【发布时间】: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