Задать вопрос
@Oyaseo
beginner programmist

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

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

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

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

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽