Блокировка - хороший способ либо с битом, либо с кроной.
Но имейте в виду, что задания по ритму выполняются во время запуска рабочего , а не во время выполнения удара.
Это приводило меня к состоянию гонки даже с замком.Допустим, рабочий выключен, а в такт выбрасывает 10 заданий в очередь.Когда сельдерей запускается с 4 процессами, все 4 из них берут задачу, и в моем случае 1 или 2 получат и установят блокировку одновременно.
Первым решением является использование cron с блокировкой, поскольку cron будет выполняться в это время, а не во время запуска работника.
Вторым решением является использование немного более продвинутого механизма блокировки, которыйобрабатывает условия гонки.Для redis посмотрите на setnx или более новый redlock .Этот пост действительно хорош и включает шаблон декоратора, который использует механизм блокировки redis-py: http://loose -bits.com / 2010/10 / распределенная задача-блокировка-в-сельдерее. Html .