簡體   English   中英

Django體系結構:我應該在哪里為所有用戶安排Celery Beat定期任務?

[英]Django Architecture: Where should I schedule a Celery Beat Periodic Task for ALL users?

我有一個django-celery-beat定期任務,需要在每周的每個星期一為每個用戶運行。 我不確定第一次創建此任務的正確位置是什么。

我了解可以使用PeriodicTaskInterval在特定代碼中的任何位置創建每用戶的celery任務,但是由於此操作是針對每個用戶運行的,因此我不確定它應該去哪里或如何實例化它。

periodic_tasks.py

# Run every time at 7:30 am on monday.
@periodic_task(run_every=crontab(hour=7, minute=30, day_of_week=1))
def test_hulk_task():
    """First hulk periodic task for testing."""
    logger.log('info', {'event': 'test_hulk_periodic_task'})

在設置中

CELERY_IMPORTS = ("path.to.periodic_tasks",)

注意:如果您尚未在項目中設置芹菜設置。 點擊此鏈接

需要明確的是,您無需為100個用戶創建100個任務。 您創建1個為每個用戶執行X任務。 您為“每個用戶”執行此操作的事實不相關/對任務定義沒有影響。

做就是了:

@task
def task_foo():
    """Do `bar` to every user."""
    users = get_user_model().objects.all()
    for user in users:
        do_bar(user)

如果您確實想為每個用戶創建一個任務,則可以調用一個單獨的任務,例如task_bar.d(user) ,而不用調用do_bar() task_bar.d(user)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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