Celery + Docker + Django无法运行asynchronous作业
我是芹菜和docker工人,我有问题。 我有以下结构的Django项目:
generic generic celery.py ... web tasks.py
通用/ celery.py:
from __future__ import absolute_import, unicode_literals import os from celery import Celery import logging logger = logging.getLogger("Celery") os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'generic.settings') app = Celery('generic') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()
networking/ tasks.py:
from __future__ import absolute_import, unicode_literals from django.conf import settings from generic.celery import app @app.task def foo(): ...
泊坞窗,compose.yml:
version: '3.0' services: db: image: postgres web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/src ports: - "8000:8000" depends_on: - db redis: image: redis:latest container_name: rd01 ports: - '6379:6379' celery: build: . container_name: cl01 command: celery worker --app=app.tasks volumes: - ..:/src links: - db - redis
当我运行我的应用程序ModuleNotFound被引发
ModuleNotFoundError: No module named 'app.tasks'
我也试图写在docker-compose.yml中:
command: celery worker --app=generic.tasks
我收到了
AttributeError: module 'generic.tasks' has no attribute 'celery'
我也试过:
command: celery worker --app=web.tasks
和:
ModuleNotFoundError: No module named 'web'
Dockerfile
FROM python:3 ENV PYTHONUNBUFFERED 1 ENV APP_USER user ENV APP_ROOT /src RUN groupadd -r ${APP_USER} \ && useradd -r -m \ --home-dir ${APP_ROOT} \ -s /usr/sbin/nologin \ -g ${APP_USER} ${APP_USER} WORKDIR ${APP_ROOT} RUN apt-get update && apt-get -y install postgresql ADD config/requirements.txt . RUN pip install -r requirements.txt ADD . /src/ USER ${APP_USER} ADD . ${APP_ROOT}
我也曾尝试将一个模块作为包含parameter passing给Celery对象
谁能告诉我这是什么问题? 我发现了许多类似的post,但没有答案没有帮助