Как отложить/отложить работу Gearman?

Я использую gearman для синхронизации данных на разных серверах. У нас есть 1 основной сервер и, например, 10 локальных серверов. Опишу одну из возможных ситуаций. Скажем, gearman заработал, и выполнено 5 заданий, данные по этим 5 серверам синхронизируются. Когда начинается выполнение следующего задания, скажем, мы потеряли связь с сервером, и он сейчас недоступен. По логике Gearman он повторяет попытку снова и снова. Таким образом, оставшиеся задания (для серверов 7, 8, 9, 10) не будут выполняться, пока не будет выполнено 6-е. Лучшим решением будет отложить задание и поставить его в конец очереди и продолжить работу заданий 7-10.

Если кто-то знает, как это сделать, пожалуйста, напишите способ.

PS: я использую питон.


person megido    schedule 25.12.2011    source источник


Ответы (2)


Задания Gearman могут выполняться параллельно или последовательно. Вместо использования отдельных заданий следует использовать параллельные задания (по одному для каждого сервера).

person user1160862    schedule 20.01.2012

GearmanClient.submit_multiple_jobs(jobs_to_submit, background=False, wait_until_complete=True, max_retries=0, poll_timeout=None)

Эта функция поможет. Просто пусть background = True.

эта ссылка тоже поможет.

person dennisyuan    schedule 10.02.2012
comment
в этом случае процесс будет заблокирован, не так ли? - person megido; 13.02.2012
comment
да, я просто привожу вам пример метода submit_multiple_jobs. Если вы установите background=True, вы можете перейти к следующей строке вашего кода. - person dennisyuan; 23.02.2012