python - 模块“模块”没有属性“芹菜”
问题描述
我需要在我的项目中使用 Celery,但是当我尝试在我的项目中安装时遇到了一些错误。我已经阅读了Django 的 Celery 文档,但我一直在犯同样的错误。
我的树项目:
- 源代码
__init__.py
芹菜.py
核
- __init__.py
project_auth
- __init__.py
- 序列化程序.py
- 任务.py
设置.py
网址.py
wsgi.py
- 文本文件.md
src/_初始化_.py :
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
__all__ = ('celery_app',)
src/celery.py:
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings')
app = Celery('src')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
src/settings.py:
INSTALLED_APPS = [
#Django apps :
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Meus apps :
'src.core',
'src.project_auth',
'src.product',
#Apps de terceiros :
'django_celery_results',
'rest_framework',
"rest_framework.authtoken",
]
CELERY_CONFIG = {
"CELERY_TASK_SERIALIZER": "json",
"CELERY_ACCEPT_CONTENT": ["json"],
"CELERY_RESULT_SERIALIZER": "json",
"CELERY_RESULT_BACKEND": None,
"CELERY_TIMEZONE": "UTC",
"CELERY_ENABLE_UTC": True,
"CELERY_ENABLE_REMOTE_CONTROL": False,
}
码头工人-compose.yml:
version: "3.8"
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db
tty: true
container_name: ${COMPOSE_PROJECT_NAME}_app
db:
container_name: ${COMPOSE_PROJECT_NAME}_db
image: postgres:14
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgres_data:/var/lib/postgresql/data/
cache:
container_name: ${COMPOSE_PROJECT_NAME}_celery_broker
image: rabbitmq:3.9
ports:
- 5672:5672
volumes:
postgres_data:
在 docker bash 我运行 celery --app src.project_auth
并得到:
Error: Invalid value for '-A' / '--app':
Unable to load celery application.
Module 'src.project_auth' has no attribute 'celery'
谢谢你的帮助 !
解决方案
看起来您的celery.py文件位于错误的位置,从错误消息中您应该将celery.py移动到project_auth文件夹中。
Module 'src.project_auth' has no attribute 'celery'
这表明 Celery 期待src/project_auth/celery.py而你有src/celery.py
另一种选择是将bash脚本更改为
celery --app src
祝你好运!
推荐阅读
- linux - 在 .text 部分分配可写内存
- gatsby - 盖茨比的 gitignore 中包含 public 是否有原因?
- environment-variables - 在 traefik2 中定义要在文件提供程序中使用的环境变量
- python - 来自图像 python 的下采样矩阵
- javascript - 动态导入图像时出错:“错误:找不到模块'./asset/
.jpg'" - vue.js - 如何禁用 Vuetify 的样式?
- sql - 如何从数据库中查询传递链接的子事务的总和?
- python - Python中的继续函数
- generics - F# - 了解使用泛型的类型
- python - Python Timeseries Pandas:如果连续出现超过 3 次,则删除 np.nan