[英]How to execute a task using celery in Django application?
我發布了一個問題: 如何每天在Django的確切時間執行一次命令?
我的回答是芹菜是最簡單的選擇,但是現在我對芹菜還有另一個問題:
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
# Executes every Monday morning at 7:30 A.M
'every-monday-morning': {
'task': 'tasks.add',
'schedule': crontab(hour=7, minute=30, day_of_week=1),
'args': (16, 16),
},
}
關於上述代碼,我有三個問題:
我必須執行execute_command(User, command)
方法。 我希望此方法將在給定的計划時間執行。
如果我想在7:30 AM but every weekdays
更改時間表,該怎么辦?
那args
? 就我而言,我應該從args
傳遞User and command
的值。 或者我可以簡單地通過task
密鑰傳遞?
我只是看了芹菜的文檔,但沒有得到我的答案。 你能幫我嗎?
您是否找到了Celery定期任務文檔 ?
您必須使用方法的標識符來注冊調度程序條目。 如果您的execute_command
任務位於名為foobar
的模塊中,則CELERYBEAT_SCHEDULE
結構的task
值應為foobar.execute_command
。
只要可以import foobar.execute_command
,Celery就會為您導入任務。
檢查celery.schedule.crontab
API ; 以下代碼應在工作日上午07:30執行:
crontab(minute=30, hour=7, day_of_week='mon-fri')
請記住,該任務將異步執行。 在計划此任務時,您無法查詢數據庫對象,並且在調用該任務時希望它仍然存在。
因此,您只應傳入保持不變的python值,並使您的任務連接到數據庫,並根據傳入的參數查找內容。
如果此任務只打算為一個特定用戶執行任務,則一定要傳遞該用戶的標識符(用戶ID,電子郵件,以及可以用來從數據庫中查找用戶的任何內容)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.