Пытаюсь выполнить примитивную задачу по отправке письма при помощи CELERY
Все, кажется, хорошо, вот только почему-то вместо выполнения задач CELERY занимается спавном воркеров
Настройки celery:
REDIS_HOST = '0.0.0.0'
REDIS_PORT = '6379'
CELERY_BROKER_URL = f'redis://{REDIS_HOST}:{REDIS_PORT}/0'
CELERY_BROKER_TRANSPORT_OPTIONS = {'visiblity_timeout': 3600}
CELERY_RESULT_BACKEND = f'redis://{REDIS_HOST}:{REDIS_PORT}/0'
CELERY_ACCEPT_CONTENT = ['json', 'applicaion/json', 'applicaion/text']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERILIZER = 'json'
celery.py:
import os
from celery import Celery
# from celery.schedules import crontab
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'send_email.settings')
app = Celery('send_email')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
tasks.py:
from send_email.celery import app as celery_app
from .service import send
@celery_app.task
def send_spam_email(user_email):
send(user_email)
views.py
class ContactView(CreateView):
'''Отображение формы подписки на email'''
model = Contact
form_class = ContactForm
success_url = '/'
template_name = 'main/contact.html'
def form_valid(self, form):
form.save()
#send(form.instance.email)
send_spam_email.delay(form.instance.email)
return super().form_valid(form)
Запускаю следующей командой:
celery -A send_email worker -l info -c 4
Также использую redis из контейнера docker
Проверял сам код на работоспособность без celery (smtp работает)
По итогу, когда я отправляю форму, celery принимает таску, но в это же время она спавнит воркеров, поэтому в консоли вот такое: