【发布时间】:2023-03-23 17:47:01
【问题描述】:
我有一个使用以下目录结构的 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 教程 (http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html) 的 celery.py 的内容。
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:guest@localhost: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 是否属于其中之一?似乎这只是一个偏好问题,但如果有一个明确的标准,我想遵循它。
标签: python django rabbitmq celery django-celery