После попытки контеризировать приложения события Celery перестали обрабатываться

я написал простой сайт на Django по покупке билетов, Celery когда пользователь начинает процесс оплаты места, оно бронируется. если через n секунд он все еще не оплатил - то оно освобождается с помощью Celery.

когда я запускал сайт локально (поднимая worker and redis manually), то всё работало корректно. Перед контеризацией я изменил настройки для celery:

CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

поменял localhost на redis, потому что слышал что Docker делает сетевым именем контейнера то, что указано в docker-compose

dockerfule:

FROM python:3.11-slim

WORKDIR /app

COPY . .

RUN pip3 install -r requirements.txt

EXPOSE 8000

CMD ["python3", "Tickets/manage.py", "runserver", "0.0.0.0:8000"]

docker-compose:

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    container_name: ticket-web
  worker:
    image: ticket-web
    working_dir: /app/Tickets
    command: celery -A Tickets worker
    depends_on:
      - redis
      - web

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

celery.py:

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Tickets.settings')

app = Celery('Tickets')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
app.conf.update(
    timezone='Europe/Moscow',  # Set your preferred timezone
    enable_utc=False,
)

app.autodiscover_tasks()


@app.task(bind=True, ignore_result=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

init:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

логи worker:

SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
 
 -------------- celery@4f22dd11a102 v5.5.2 (immunity)
--- ***** ----- 
-- ******* ---- Linux-6.10.14-linuxkit-aarch64-with-glibc2.36 2025-07-03 18:01:06
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         Tickets:0xffffa1a7fad0
- ** ---------- .> transport:   redis://redis:6379/0
- ** ---------- .> results:     redis://redis:6379/0
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery
Вернуться на верх