Celery не может подключиться к Postgres Django
Celery не может подключиться к Postgres Django
Проблема в том, что контейнер Celery не может подключиться к базе данных Postgres, когда начинает выполнять задание. В чем может быть проблема? При отправке задачи возвращается следующая ошибка - django.db.utils.OperationalError: connection is bad: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory. Работает ли сервер локально и принимает ли он соединения на этом сокете?
docker-compose.yml
version: '3'
services:
db:
image: postgres:latest
container_name: postgres
restart: always
env_file:
.env
ports:
- "5432:5432"
web-app:
build: .
container_name: django
restart: always
command: >
sh -c "python manage.py makemigrations &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
volumes:
- .:/app
ports:
- "8000:8000"
env_file:
.env
depends_on:
- db
- redis
- worker
worker:
build: .
container_name: celery
restart: always
command: celery -A yumezo worker -l info
volumes:
- .:/app
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
celery.py
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yumezo.settings')
app = Celery('yumezo')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
init.py
from .celery import app as celery_app
__all__ = ['celery_app']
settings.py
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_RESULT_BACKEND = 'redis://redis:6379/0'
ENV file
POSTGRES_DB = 'yumezo'
POSTGRES_USER = 'katsuyoriiii'
POSTGRES_PASSWORD = 'pass'
DB_HOST = 'db'
DB_NAME = 'yumezo'
DB_USER = 'katsuyoriiii'
DB_PASS = 'pass'
DB_PORT = 5432
tasks.py
from .models import User
from .services import SendEmail
from celery import shared_task
@shared_task
def activate_email_task(user_pk):
user = User.objects.get(pk=user_pk)
send_email = SendEmail(user=user)
send_email.send_activate_email()