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

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

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

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

2 ответа

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

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

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

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

Другие вопросы по тегам