@Oyaseo
beginner programmist

Как отправить письмо через 5 минут после return?

Есть функция, которая отправляет письмо и ретурнит True. Нужно заретурнить True и через 5 минут отправить письмо. Вешал на threading.Timer проверял принтами, письмо отправляет сразу, а принты выводит по времени. Потом попробовал создать генератор для отправки письма и вызывать по времени генератор, но результат тот же. Возможно я не правильно использовал yield? Подскажите как лучше сделать
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
В голой Джанге отложенная отправка письма в рамках обработки http-запроса видится мне очень костыльной, в любом случае, делегировать отправку письма каким-нибудь способом нужно внешнему сервису.

Если письмо отправляется с помощью какого-нибудь сервиса (а не просто SMTP) - наверняка в его API есть возможность отложенной отправки.
Если используется Celery - опция countdown в помощь.

UPD:
Руслан Ежгуров: Если ничего из вышеперечисленного не используется. Celery обычно сложнее интегрировать с проектом, поэтому начните отправлять почту через какой-либо сервис. Из последнего годного, с чем сам работал - SparkPost, для небольших и средних проектов бесплатных лимитов хватает за глаза. Заодно решите проблемы с доставкой/недоверием к вам почтовых сервисов (ну, это сами спамить не будете, а то вас сам спаркпост отрубит быстро).
Библиотека для интеграции с Python/Django python-sparkpost, в методе отправки сообщения есть возможность отложенной отправки (см. параметр start_time)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Как можно ответить на вопросы о неправильном использовании какого то метода, не видя этого самого использования?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы