та же задача в celery+redis выполняется множество раз?
Прям с тем же id?
нет, если ставить задачу с большим eta, то селери процесс начинает через некоторое время ресивить новые задачи-дубликаты
Там есть параметр которым можно управлять чтобы такого не было.
не можешь подсказать, не могу в доке подобного найти
CeleryApp.conf.broker_transport_options = {'visibility_timeout': ХХХ} - ХХХ целочисленное значение, в секундах, больше, чем самая долгая таска по таймауту. Там суть в том, что когда воркер берет таску, она становится невидимой для других воркеров. Когда время visibility_timeout проходит, а таска еще не выполнена - она становится видна другим воркерам. Они её берут в работу. И получается, что одна и та же таска исполняется несколькими воркерами.
Принял спасибо, есть ли минусы установки большого значения для visibility_timeout?
Хз, можно компенсировать это ограничив длительность работы таски
Если поставить concurrency в 1, может решить проблему что воркеров берут одну и ту же таску?
мне нужно отсрочить в большом промежутке времени выполнение таски
Как по мне - если с воркером беда и он не выполняет задачи (честно, не знаю, в каких случаях такое возможно), то другие воркеры таску не возьмут, пока таймут по видимости не пройдёт. И таски будут висеть в ожидании, хотя есть свободные воркеры.
Мне кажется, нет. Это определяет кол-во concurrent исполняемых тасок, немного не тот параметр
При редеплое может случиться
Обсуждают сегодня