Как вы препятствуете выполнению периодической задачи Сельдерей до завершения предыдущего выполнения?
У меня есть кластер серверов, связанных с общим сервером базы данных, выполняющий задачи Celery, и я нахожу, что каждый сервер может иногда запускать одну и ту же задачу одновременно, а также разные серверы, выполняющие эту же задачу одновременно. Это вызывает множество условий гонки, которые искажают мои данные болезненно тонкими способами.
Я читал Документы Celery, но я не могу найти какой-либо опции, которая явно разрешает это. Я нашел аналогичный вопрос, но предлагаемое исправление кажется взломом, поскольку оно основывается на структуре кэширования Django и, следовательно, может не использоваться всеми серверами в кластере, позволяя нескольким серверам выполнять одну и ту же задачу одновременно.
Есть ли какой-либо вариант в Celery для записи того, какие задачи выполняются в настоящее время в базе данных, и не запускаться снова до тех пор, пока запись базы данных не будет очищена?
Я использую модуль Django-Celery, и даже если он предоставляет страницы /admin/djcelery/taskstate/and/admin/djcelery/workerstate/, я никогда там появляются рабочие задачи или рабочие.