AttributeError: module 'module' has no attribute 'celery'
AttributeError: module 'module' has no attribute 'celery'
我想在我的 Django 应用程序中使用 celery 来完成一个应该在后台 运行 的任务。我已遵循这些教程 Asynchronous Tasks With Django and Celery and First steps with Django Using Celery with Django
我的项目结构:
project
├──project
| ├── settings
| ├──__init__.py (empty)
| ├──base.py
| ├──development.py
| └──production.py
| ├──__init__.py
| └──celery.py
├──app_number_1
| └──tasks.py
project/project/初始化.py :
from __future__ import absolute_import, unicode_literals
# 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']
project/project/celery.py :
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings.production')
app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
project/project/设置/production.py:
INSTALLED_APPS = [
'background_task',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
]
.
.
.
CELERY_BROKER_URL = 'mongodb://mongo:27017'
CELERY_RESULT_BACKEND = 'mongodb://mongo:27017'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
docker-compose.yml:
version: '3'
services:
web:
env_file:
- env_vars.env
build: .
restart: always
command:
- /code/runserver.sh
ports:
- "80:8000"
depends_on:
- db
- mongo
db:
...
mongo:
image: mongo:latest
restart: always
runserver.sh:
#!/bin/bash
sleep 1
python3 /code/project/manage.py migrate --settings=project.settings.production
python3 /code/project/manage.py runserver 0.0.0.0:8000 --settings=project.settings.production & celery -A project worker -Q celery
在 docker-compose up --build
之后我得到以下错误:
web_1 | Running migrations:
web_1 | No migrations to apply.
mongo_1 | 2019-08-28T10:24:26.478+0000 I NETWORK [conn2] end connection 172.18.0.4:42252 (1 connection now open)
mongo_1 | 2019-08-28T10:24:26.479+0000 I NETWORK [conn1] end connection 172.18.0.4:42250 (0 connections now open)
web_1 | Error:
web_1 | Unable to load celery application.
web_1 | Module 'project' has no attribute 'celery'
任何提示都很棒!
谢谢
芹菜模块不包含在第一个项目文件夹中。
您可以将它移到那里或通过添加 __init__ 模块并将 celery 命令中的应用程序实例模块设置为:
将项目打包
celery -A project.project worker -Q celery
我想在我的 Django 应用程序中使用 celery 来完成一个应该在后台 运行 的任务。我已遵循这些教程 Asynchronous Tasks With Django and Celery and First steps with Django Using Celery with Django
我的项目结构:
project
├──project
| ├── settings
| ├──__init__.py (empty)
| ├──base.py
| ├──development.py
| └──production.py
| ├──__init__.py
| └──celery.py
├──app_number_1
| └──tasks.py
project/project/初始化.py :
from __future__ import absolute_import, unicode_literals
# 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']
project/project/celery.py :
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings.production')
app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
project/project/设置/production.py:
INSTALLED_APPS = [
'background_task',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
]
.
.
.
CELERY_BROKER_URL = 'mongodb://mongo:27017'
CELERY_RESULT_BACKEND = 'mongodb://mongo:27017'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
docker-compose.yml:
version: '3'
services:
web:
env_file:
- env_vars.env
build: .
restart: always
command:
- /code/runserver.sh
ports:
- "80:8000"
depends_on:
- db
- mongo
db:
...
mongo:
image: mongo:latest
restart: always
runserver.sh:
#!/bin/bash
sleep 1
python3 /code/project/manage.py migrate --settings=project.settings.production
python3 /code/project/manage.py runserver 0.0.0.0:8000 --settings=project.settings.production & celery -A project worker -Q celery
在 docker-compose up --build
之后我得到以下错误:
web_1 | Running migrations:
web_1 | No migrations to apply.
mongo_1 | 2019-08-28T10:24:26.478+0000 I NETWORK [conn2] end connection 172.18.0.4:42252 (1 connection now open)
mongo_1 | 2019-08-28T10:24:26.479+0000 I NETWORK [conn1] end connection 172.18.0.4:42250 (0 connections now open)
web_1 | Error:
web_1 | Unable to load celery application.
web_1 | Module 'project' has no attribute 'celery'
任何提示都很棒!
谢谢
芹菜模块不包含在第一个项目文件夹中。
您可以将它移到那里或通过添加 __init__ 模块并将 celery 命令中的应用程序实例模块设置为:
将项目打包celery -A project.project worker -Q celery