Я подозреваю, что вы можете запутаться, потому что rqscheduler
по умолчанию проверяет новые задания каждую минуту. Вы можете настроить это с помощью флага -i
, чтобы установить интервал в секундах, а также добавить флаг -v
для более подробного вывода:
rqscheduler -i 1 -v
Однако я также заметил еще одну проблему с вышеупомянутым Flask code ...
Возможно, из-за сервера dev , порождающего отдельный процесс Я обнаружил, что функция scheduler.enqueue_in
дважды ставила задачу в очередь. Это, вероятно, не было бы проблемой, если бы функция enqueue_in
была вызвана внутри функции представления. Однако, где бы он ни находился, он фактически запускается при запуске приложения.
Так что при запуске с сервера dev он выполняется дважды . Затем он будет запускаться один раз каждый раз, когда автозагрузчик обнаруживает изменение кода: так что после запуска сервера dev и сохранения изменения в коде всего 3 задания были поставлены в очередь.
Для проверки этого может быть целесообразно иметь простой python скрипт, который на самом деле не запускает приложение Flask:
# enqueue_test.py
from redis import Redis
from rq import Queue
from rq_scheduler import Scheduler
from tasks import example
r = Redis.from_url('redis://localhost:6379')
q = Queue('test', connection=r)
scheduler = Scheduler(queue=q, connection=r)
scheduler.enqueue_in(datetime.timedelta(seconds=1), example, 2)