@s7fkcu

Django celery не обрабатывает фоновую задачу?

Всем привет. Есть проект на django 2.2 и celery 4.2.2
После регистрации в фоновом режиме отправляю письмо на активацию аккаунта. Celery видеть таск, пишет "received task", но саму функцию не исполняет.
# view
class SignUpFormView(FormView):
    .....
    def form_valid(self, form):

        current_site = get_current_site(self.request)
        mail_subject = 'Активация аккаунта '
        to_email = [
            form.cleaned_data.get('email'),
        ]
        from_email = settings.EMAIL_HOST_USER
        ctx = {
            'user': user,
            'domain': current_site,
            'uid': urlsafe_base64_encode(force_bytes(user.pk)),
            'token': account_activation_token.make_token(user),
        }
        message = render_to_string('mail/acc_active_email.html', ctx)
        send_mail_activation.delay(message, mail_subject, from_email, to_email)
        return super(SignUpFormView, self).form_valid(form)

# task
@task()
def send_mail_activation(message, mail_subject, from_email, to_email):
    msg = EmailMessage(mail_subject, message, from_email, to_email)
    msg.content_subtype = 'html'
    msg.send()

настройки сельдерея
# settings.py
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/1'

# celery.py
import os
from celery import Celery
from django.conf import settings
# Основыне настройки Django для celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
# for Windows
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
app = Celery('settings')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

# __init__.py
from .celery import app as celery_app
__all__ = ('celery_app',)

в чем может быть проблема ?
  • Вопрос задан
  • 416 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы