gpt4 book ai didi

python - Django Celery 目录结构和布局

转载 作者:行者123 更新时间:2023-11-28 16:33:01 24 4
gpt4 key购买 nike

我有一个使用以下目录结构的 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 文件将“报告”替换为“帐户”。我不应该有一个生活在同一水平的 celery 文件吗?作为 manage.py?任何帮助或建议将不胜感激。

最佳答案

celery 应用程序文件应该位于项目的核心目录中,以及您发布的文档中显示的设置和所有其他内容。

要定义可移植任务,将它们放在使用它们的应用程序中是有意义的,正如您所指出的,在您的例子中是报告应用程序。

想法是您的任务文件由项目中定义的任何 celery 应用程序注册,并且您的 django 应用程序不需要知道哪个 celery 应用程序正在注册任务。您可以使用 shared_task 来执行此操作装饰器而不是 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

在 tasks.py 中你有这样的东西:

from celery import shared_task

@shared_task
def my_add_task(a, b):
return a + b

希望这对您有所帮助。

关于python - Django Celery 目录结构和布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30103029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com