我有一个django项目使用以下目录结构。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.py
settings/
__init__.py <-- project settings file
system/
cron/
mongodb/
redis/
manage.py
这里的celery.py从芹菜教程(http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html)导出的内容。
from __future__ import absolute_import
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
from django.conf import settings
# app = Celery('reports')
app = Celery('reports',
backend='djcelery.backends.database:DatabaseBackend',
broker='amqp://guest:[email protected]alhost:5672//')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
我的一些应用程序是跨项目共享的。报告,例如可能在4个不同的项目中使用,所以 我可以看到tasks.py应该如何在报告应用程序中生存,因此当它被添加到新项目 任务时。我不太明白的是,为什么celery.py也需要在报告应用程序中生活。当我去添加一些任务到帐户的应用程序,我基本上建立相同的celery.py文件 用'帐户'替换'报告'。我不应该有一个芹菜文件与manage.py生活在同一级 吗?任何帮助或建议将不胜感激。
接受@qwattash回答,因为它让我知道我要去哪里。但这真的是标准吗?我有系统和设置“应用程序”为每个项目,celery.py属于其中之一?看起来这只是一个偏好问题,但如果有一个明确的标准,我想遵循它。 – scoopseven