Проблема с Celery - Docker не может запустить фоновую задачу Celery, Celery, похоже, не запускается должным образом - Docker, Django, React, Redis, Celery

Я создал тестовый репозиторий, в котором есть Django, React, Redis, Celery: https://github.com/axilaris/docker-django-react-celery-redis. Моя цель - заставить сельдерей работать, но он не работает.

Это основано на этом учебном коде примера Docker - React и Django: https://github.com/dotja/authentication_app_react_django_rest

И пытаемся использовать Docker - Celery & Redis из этого учебного кода: https://github.com/veryacademy/docker-mastery-with-django/tree/main/Part-4%20Django%20Postgres%20Redis%20and%20Celery <-- Часть 4 учебника по Celery & Redis

У меня возникают проблемы с правильным запуском Celery, так как я вижу, что фоновая задача не выполняется.

Он не выводил этого. Я думаю, что проблема в этом.

celery       |  -------------- celery@b755a7cdba8d v5.3.6 (emerald-rush)
celery       | --- ***** ----- 
celery       | -- ******* ---- Linux-6.6.12-linuxkit-aarch64-with 2024-03-02 20:48:06
celery       | - *** --- * --- 
celery       | - ** ---------- [config]
celery       | - ** ---------- .> app:         core:0xffff9bbd7550
celery       | - ** ---------- .> transport:   redis://redis:6379//
celery       | - ** ---------- .> results:     redis://redis:6379/
celery       | - *** --- * --- .> concurrency: 10 (prefork)
celery       | -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
celery       | --- ***** ----- 
celery       |  -------------- [queues]
celery       |                 .> celery           exchange=celery(direct) key=celery

Вот более подробная информация в логах консоли для сборки/подготовки docker-compose, а также для неудачного фонового задания https://gist.github.com/axilaris/095b4fd926df6a27b5e635fc1b51c854

2024-03-02 21:31:33,403 DEBUG 
def add(x, y):
    return 1
..
  File "/usr/local/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.9/site-packages/kombu/connection.py", line 476, in _reraise_as_library_errors
    raise ConnectionError(str(exc)) from exc
kombu.exceptions.OperationalError: [Errno 111] Connection refused

Мне кажется, что эта проблема связана с моим docker-compose.yaml или Dockerfile для backend и celery.

Я видел ваши файлы на github, вы можете сделать это:
во-первых, в вашем init файле в "backend/backend/init.py", установите это:

from .celery import app as celery_app

__all__ = ("celery_app",)

Установите порт redis в файле docker compose и измените команду celery:

redis: 
image: redis:alpine
ports:
  - "6379:6379"

celery:
restart: always
build:
  context: ./backend
command: celery -A backend worker -l info
volumes:
  - .:/django
container_name: celery  
depends_on:
  - redis

В конце вы можете установить сеть для вашего docker compose, или проверить журнал docker и сеть.

Вы также можете использовать эту ссылку: https://saasitive.com/tutorial/django-celery-redis-postgres-docker-compose/

Вернуться на верх