После попытки контеризировать приложения события Celery перестали обрабатываться [closed]
я написал простой сайт на 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