问题描述
为什么 Celery beat 总是在 5 秒内醒来,而我没有任何已启用的任务?
有没有办法将这段时间从 5s 更改为 10m?
日志:
web_1 | [2021-03-03 09:43:11,936: INFO/Beat] DatabaseScheduler: Schedule changed.
web_1 | [2021-03-03 09:43:11,936: DEBUG/Beat] Writing entries...
web_1 | [2021-03-03 09:43:11,969: DEBUG/Beat] DatabaseScheduler: Fetching database schedule
web_1 | [2021-03-03 09:43:11,974: DEBUG/Beat] Current schedule:
web_1 |
web_1 | [2021-03-03 09:43:12,013: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:17,025: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:22,033: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:27,044: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:32,059: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:37,068: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:42,080: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:47,095: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:52,108: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:43:57,121: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:02,131: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:07,140: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:12,147: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:17,165: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:22,177: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:27,199: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:32,205: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:37,223: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:42,230: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:47,242: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:52,254: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:44:57,262: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:45:02,276: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:45:07,289: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:45:12,304: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:45:17,313: DEBUG/Beat] beat: Waking up in 5.00 seconds.
web_1 | [2021-03-03 09:45:22,326: DEBUG/Beat] beat: Waking up in 5.00 seconds.
我正在使用:
celery==5.0.5
django-celery-beat==2.2.0
django-redis==4.11.0
redis==3.2.0
这就是我开始 Celery 的方式:
celery -A project worker --beat --scheduler django --concurrency=2 -Ofair --loglevel=debug --task-events
我知道问题可能与时区有关,但我在 TZ 使用 UTC。
CELERY_IGnorE_RESULT = False
CELERY_STORE_ERRORS_EVEN_IF_IGnorED = True
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'UTC'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_TASK_TRACK_STARTED = True
broKER_CONNECTION_TIMEOUT = 15
# broKER_HEARTBEAT = 10
# broKER_HEARTBEAT_CHECKRATE = 2.0
CELERY_ACKS_LATE = True
知道如何解决这个问题吗?
解决方法
Celery Beat 必须定期运行才能安排工作。这不是问题,并且不会占用太多资源。您看到这种情况的唯一原因是日志记录设置为“调试”级别,这可能会有些嘈杂。