簡體   English   中英

如何在Django應用程序中使用celery執行任務?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM