Python Django芹菜目录结构和布局
我有一个django项目,它使用以下目录结构Python Django芹菜目录结构和布局,python,django,rabbitmq,celery,django-celery,Python,Django,Rabbitmq,Celery,Django Celery,我有一个django项目,它使用以下目录结构 project/ account/ models.py views.py blog/ models.py views.py mediakit/ models.py views.py reports/ celery.py <-- new models.py tasks.py <-- new views.p
project/
account/
models.py
views.py
blog/
models.py
views.py
mediakit/
models.py
views.py
reports/
celery.py <-- new
models.py
tasks.py <-- new
views.py
settings/
__init__.py <-- project settings file
system/
cron/
mongodb/
redis/
manage.py
我的一些应用程序是跨项目共享的。例如,报告可能用于4个不同的项目,因此
我可以看到tasks.py应该如何存在于reports应用程序中,以便在将其添加到新项目时
任务随之而来。我不太明白的是,为什么芹菜.py需要在reports应用程序中使用
也当我向account应用程序添加一些任务时,我基本上是在构建相同的芹菜.py文件
将“报告”替换为“帐户”。我不应该有一个芹菜档案,生活在同一水平
作为manage.py?如有任何帮助或建议,将不胜感激 您只需要一个芹菜文件。只要
\uuu init\uuu
文件位于同一文件夹中并具有所需的调用,建议您将其放置在主项目目录或设置所在的位置。芹菜应用程序文件应位于项目的核心目录中,以及您发布的文档中显示的设置和所有其他内容
要定义可移植任务,将它们放在正在使用它们的应用程序中是有意义的,正如您所指出的,在您的案例中是reports应用程序
其思想是,您的任务文件由项目中定义的任何芹菜应用程序注册,而您的django应用程序不需要知道哪个芹菜应用程序正在注册任务。您可以通过使用decorator而不是app.task
来实现这一点
总结如下:
project/
project/
settings.py
celery.py <- new, shown in the docs, also add __init__.py
urls.py
account/
models.py
views.py
blog/
models.py
views.py
mediakit/
models.py
tasks.py <-- tasks for the me
views.py
reports/
models.py
tasks.py <-- tasks for the reports app
views.py
manage.py
希望这能有所帮助。您能详细介绍一下吗?我试着将它添加到/project/_init__.py,但最终出现了各种导入错误。芹菜教程说,把它放在/projects/reports/_init__uu;.py()上,可能是你的目录结构有问题,因为我在多个应用程序中使用它,芹菜.py在我的“核心”应用程序中,它也包含我的设置。manage.py/settings文件在哪里?已更新帖子。我的设置在/settings/_init__.py中。另请注意,您将celery.py放在二级项目文件夹中,并将其称为“celery-项目工作人员-l信息”,其中项目指的是该二级文件夹。接受@qwattash答案,因为它让我知道了我要去的地方。但这真的是标准吗?我有每个项目的系统和设置“应用程序”,芹菜.py是否属于其中之一?似乎这只是一个偏好的问题,但如果有一个明确的标准,我愿意遵循它。
project/
project/
settings.py
celery.py <- new, shown in the docs, also add __init__.py
urls.py
account/
models.py
views.py
blog/
models.py
views.py
mediakit/
models.py
tasks.py <-- tasks for the me
views.py
reports/
models.py
tasks.py <-- tasks for the reports app
views.py
manage.py
from celery import shared_task
@shared_task
def my_add_task(a, b):
return a + b