我发现的大多数和弦例子都在这一行:
res = chord([add.s(2, 2), add.s(4, 4)])(sum_task.s())
或
chord(add.subtask((i, i))
... for i in xrange(100))(tsum.subtask()).get()
我目前有一段代码可以解雇任务:
for node in self.simulationRecord.fields['departureNodes']:
passengers = int(outgoing_seat_counts.get(node, 0))
# send the job to the queue
res = tasks.my_task.delay(passengers, start_date, end_date)
task_ids.append(res.id)
我想转换为使用和弦,但我无法根据我看到的例子,弄清楚如何将当前结构转换为使用和弦。如何将带有参数的my_task
的每个调用添加到和弦?
答案 0 :(得分:1)
您可以从任务列表和回拨中调用chord
。例如,如果你有一个添加功能,那么你可以像这样调用和弦
tasks = []
for i in range(10):
tasks.append(add.s(i, i))
callback = add.si(100, 100)
chord_result = group(tasks)(callback)
答案 1 :(得分:0)
我最后将我的代码更改为下面的代码以使用和弦。基本上我在循环中构建参数列表,然后使用它创建和弦:
arg_list = []
for node in self.simulationRecord.fields['departureNodes']:
passengers = int(outgoing_seat_counts.get(node, 0))
arg_list.append({'passengers': passengers})
res = chord(tasks.my_task.s(i['passengers'],start_date,end_date) for i in arg_list)(tasks.callback.s())
task_ids = [task.id for task in res.parent.results]