Может ли обратный вызов cluster_status отправлять новые задания?
Я занимаюсь разработкой скрипта, работающего с большим количеством объектов (да).
Для каждого объекта необходимо выполнить несколько операций - только одна из них должна выполняться первой, остальные используют результаты первой работы и могут выполняться в любом порядке.
cluster = dispy.JobCluster(
getShift,
setup = functools.partial(doLoads, from, to),
cluster_status = processed,
nodes = Nodes
)
Я полагаю, что простой способ состоит в том, чтобы сделать две петли cluster.submit()
- первый цикл для первого задания для каждого объекта, а второй цикл - для всех остальных.
Тем не менее, я хотел бы начать отправку последующих заданий, как только основное задание будет завершено для каждого объекта - не дожидаясь, пока оно будет выполнено для всех остальных объектов.
Какой правильный способ сделать это? В частности, может ли мой processed
функция обратного вызова отправить дополнительные задания в том же кластере?
1 ответ
Да, обратный вызов может подать новую работу. Смотрите, например, job_scheduler.py, который представляет вакансии в callback
(хотя cluster_status
также может быть использован для этой цели). Из приведенного выше описания, кажется, вы можете использовать callback
вместо cluster_status
,