我有一种情况需要使用Celery在后台处理一些数据。主要任务是启动两个子任务;我想强制执行子任务的顺序。这种强制执行的原因是第二个子任务取决于第一个子任务的完成。否则,第二个子任务将以最大递归错误结束。
a = group([perform_driver_calibration.s(task, portfolio_id, scenario_id) for task in tasks])
b = group([model_field_compile.s(task, model_field, scenario_id)
for task, model_field in zip(tasks, ModelFields.objects(PortfolioModelId=portfolio_model_id))])
我想执行任务a
;完成后,任务b
应该开始。
这就是我按顺序执行的操作,但有时它仍然无序。
# Order of execution is VERY important
# 1. Driver Calibration
# 2. Field Calculation
chain(a(), b())
如何优先考虑芹菜中的子任务?