gpt4 book ai didi

django - 在 celery 3.1 中,使 django 周期性任务

转载 作者:行者123 更新时间:2023-11-28 19:36:29 29 4
gpt4 key购买 nike

Django 的变化太大了,所以我不能使用 3.1。我需要一些帮助。

我读到了 make a task in django ,然后阅读 Periodic Tasks文档。但我不知道如何在 django 中进行周期性任务。我认为这是因为我的英语水平低..

在旧版本的 Celery 中,我导入了 djcelery&crontab 并在 settings.py 中设置了 CELERYBEAT_SCHEDULE,并由 执行管理.py

但似乎我不能再以这种方式执行 celery 守护进程了。比我应该把 CELERYBEAT_SCHEDULE 放在哪里?在文档中的 django 示例中,他们设置了 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')proj/proj/celery.py 中。 (1) 所以在 settings.py 中设置 celerybeat(像以前一样)可以吗?

(2) 如果可以的话,一个在 Django 中制作周期性任务的小例子会很有帮助。当我阅读教程时,最令人困惑的部分是文件路径。如果您不想提供一个完整的示例,如果您能解释一下我应该在哪里创建任务、设置节拍和执行守护进程,我将不胜感激。

感谢阅读。

最佳答案

我假设您已经阅读了 django section来自文档,但是你看到这个了吗example project

它不使用调度程序,但如果您将其添加到 settings.py:

from __future__ import absolute_import

from celery.schedules import crontab


CELERYBEAT_SCHEDULE = {
# crontab(hour=0, minute=0, day_of_week='saturday')
'schedule-name': { # example: 'file-backup'
'task': 'some_django_app.tasks....', # example: 'files.tasks.cleanup'
'schedule': crontab(...)
},
}

# if you want to place the schedule file relative to your project or something:
CELERYBEAT_SCHEDULE_FILENAME = "some/path/and/filename"

现在对于命令,忘记 manage.py,直接输入 celery 即可:

-B 一如既往地启用 celery beat。

-A 指定 celery 应用程序的名称。请注意 celery.py 中的这一行示例项目:app = Celery('proj')

celery -A proj worker -B -l info

'django-celery' 不需要,仅在需要管理时安装它来自管理员的计划,或者如果您想将任务结果存储在数据库中通过 django 的 ORM:

INSTALLED_APPS += ('djcelery',)

# store schedule in the DB:
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

关于django - 在 celery 3.1 中,使 django 周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116573/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com