Как отложить / отложить работу 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.
Эта ссылка тоже поможет.