如何在django项目中将每个基于芹菜类的任务保存在单独的文件中



我已经使用
上的官方文档在我的django项目中设置了芹菜http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-django 芹菜

所以我的项目结构是

└── mysite
├── db.sqlite3
├── manage.py
├── mysite
│   ├── celery.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
├── admin.py
├── apps.py
├── forms.py
├── __init__.py
├── migrations
│   ├── 0001_initial.py
│   └── __init__.py
├── models.py
├── tasks.py
├── tests.py
└── views.py  

polls是应用程序
polls/tasks.py具有基于类的芹菜任务
当前tasks.py有许多任务,因此文件太大。我想像一样将每个任务保存在单独的文件中

mysite/polls/
├── admin.py
├── apps.py
├── forms.py
├── __init__.py
├── migrations
│   ├── 0001_initial.py
│   └── __init__.py
├── models.py
├── tasks # I want to keep easy task in separate file like this
│   ├── __init__.py
│   ├── download_task.py
│   ├── process_task.py
│   └── upload_task.py
├── tests.py
└── views.py

如何使此设置正常工作?

这是100%正确的。在tasks/__init__.py文件中,确保从其他文件导入任务:

from .download_task import *  
from .process_task import *
# etc...

然后确保在celery.py文件中有autodiscover_tasks调用,以发现每个INSTALLED_APPS中的任务。

2023更新

您可以在celery.py中设置autodiscover_tasks来查找其他文件。

例如。app.autodiscover_tasks(related_name='tasksv2'(

这将在你的应用程序文件夹中搜索"taskv2.py"。

相关内容

  • 没有找到相关文章

最新更新