celery定時任務不生效原因

2021-10-10 08:17:42 字數 1684 閱讀 2891

最近有乙個新的任務需要在後台定時進行,於是使用了celery的定時器來實現,但是加了任務後,到設定的時間點時任務就是不會被觸發執行。定位了很多地方,最後發現是時間設定有問題。

需求:早上7點~凌晨12點每30分鐘執行一次,於是我將任務定義成了這樣

sender.add_periodic_task(

crontab(minute='*/30', hour="7-24"),

sync_module_data_periodic,

name="sync module data",

queue="celery_module_queue",

)

與這個任務一起註冊的其它定時任務都可以正常被觸發(區別在於其它任務只在指定的幾個時間點觸發),唯獨這個任務不行。定位了很久才發現是hour那裡設定錯了,應該是7-23,沒有24點。。

修改後:

sender.add_periodic_task(

crontab(minute='*/30', hour="7-23"),

sync_module_data_periodic,

name="sync module data",

queue="celery_module_queue",

)

這裡再記錄一下celery常用的cronrab配置(引自

例子含義

crontab()

每分鐘執行

crontab(minute=0, hour=0)

每天午夜執行

crontab(minute=0, hour=』*/3』)

每三個小時執行: 午夜, 3am, 6am, 9am, 正午, 3pm, 6pm, 9pm.

crontab(minute=0,hour=』0,3,6,9,12,15,18,21』)

同上crontab(minute=』*/15』)

每15分鐘執行

crontab(day_of_week=』sunday』)

星期日每分鐘

crontab(minute=』『,hour=』『, day_of_week=』sun』)

同上crontab(minute=』*/10』,hour=』3,17,22』, day_of_week=』thu,fri』)

每10分鐘執行,僅限於週六日3-4 am, 5-6 pm, and 10-11 pm

crontab(minute=0, hour=』/2,/3』)

偶數小時或者能被3整除的小時數執行

crontab(minute=0, hour=』*/5』)

被5整除的小時數,如3pm

crontab(minute=0, hour=』*/3,8-17』)

8am-5pm能被3整除的

crontab(0, 0, day_of_month=』2』)

每月第2天

crontab(0, 0,day_of_month=』2-30/3』)

每偶數天

crontab(0, 0,day_of_month=』1-7,15-21』)

每月1和3周

crontab(0, 0, day_of_month=』11』,month_of_year=』5』)

每年5月11日

crontab(0, 0,month_of_year=』*/3』)

每個季度第1月

Scheduled 定時任務不生效原因

經過一系列的排查發現,原來是測試過程中,測試先將服務啟動。然後再手動調整伺服器本地時間為22 59 00秒,等23點的時候,看定時任務是否執行。因為,spring的定時器是在服務啟動初始化的時候,便已經指定了下一次定時任務執行的時間,這時候手動去調整本地時間是沒有效果的。我們在檢視 中可以看到,sc...

Celery 定時任務

project celery task celery包 init py 包檔案 celery.py celery連線和配置相關檔案,且名字必須交celery.py tasks.py 任務體函式檔案 注意 任務體 檔案要與celery.py檔案在同乙個包下 beat也是乙個socket,啟動後會根據配...

Celery 定時任務

celery beat是乙個排程程式,它定期啟動任務,然後由集群中的可用工作程式節點執行任務。預設情況下,條目是從 beat schedule 設定中獲取的 但也可以使用自定義儲存,例如將條目儲存在sql資料庫中。必須確保一次只有乙個排程程式針對乙個排程任務執行,否則最終將導致重複的任務。使用集中式...