Сбросить обратный отсчет времени для задания Celery - PullRequest
8 голосов
/ 07 марта 2012

Мне нужно запустить задачу сельдерея после обратного отсчета, но я могу сбросить этот отсчет при определенных условиях.Например, я хочу вызвать apply_async с countdown=15, но если определенное событие произойдет до того, как задача будет выполнена, я бы хотел установить обратный отсчет до 15 секунд.

Из документации и поиска в GoogleЯ думаю, что я мог бы сделать это, сохранив идентификатор задачи, а затем отозвать и заново создать задачу, если произойдет событие.Мне было интересно, есть ли более элегантный подход к этому.

Ответы [ 2 ]

1 голос
/ 25 ноября 2012

Вместо установки обратного отсчета, вы не можете просто отменить эту задачу и создать новую?

0 голосов
/ 03 апреля 2015

Используйте некоторый кеш, такой как Redis, для хранения ключа блокировки.При вызове apply_async увеличивается значение ключа.Когда вы выполняете эту задачу в сельдерее - уменьшите это значение.Если значение равно 0 - выполнить задачу.Поэтому, если было два вызова apply_async, ваш счетчик будет равен 2, и первое выполнение задачи будет пропущено.

Я думаю , этот код может помочь вам .

...