【发布时间】:2011-09-15 00:23:20
【问题描述】:
我正在使用 celerybeat 启动一项主要任务,该任务启动了许多次要任务。我已经写好了这两个任务。
有没有办法轻松做到这一点? Celery 是否允许在任务中运行任务?
我的例子:
@task
def compute(users=None):
if users is None:
users = User.objects.all()
tasks = []
for user in users:
tasks.append(compute_for_user.subtask((user.id,)))
job = TaskSet(tasks)
job.apply_async() # raises a IOError: Socket closed
@task
def compute_for_user(user_id):
#do some stuff
compute 被 celerybeat 调用,但在尝试运行 apply_async 时会导致 IOError。有什么想法吗?
【问题讨论】:
-
可以从任务中启动任务集吗?
-
任务和任务集可以从一个任务中应用,但你永远不应该等待他们的结果(见docs.celeryproject.org/en/latest/userguide/…)
-
解决办法是什么?