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

34gzjxbg  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(119)

我在我的django项目中使用官方文档设置了celery
http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-with-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有基于类的celery任务。
目前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

如何使此设置正常工作?

ugmeyewa

ugmeyewa1#

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

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

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

41zrol4v

41zrol4v2#

2023更新

您可以在www.example.com中设置autodiscover_taskscelery.py以查找其他文件。
例如:app.autodiscover_tasks(related_name='tasksv2')
这将在您的apps文件夹中搜索'taskv2.py'。

相关问题