Как отправлять еженедельные электронные письма по расписанию в Django
Я хочу отправлять запланированные электронные письма для своих пользователей каждую пятницу. Я использую Pythonanywhere, поэтому я не могу использовать Celery, так как PA может работать с ним. Я хочу использовать функцию Task в PA, которая не может планировать недельные задачи, поэтому она должна проверять каждый день, если сегодня пятница. Я начал писать функцию, но я не настолько опытен и застрял. Я не знаю, как написать функцию, если у нее нет html, где я нажимаю кнопку, чтобы вызвать функцию.
Я создал weekly_email_mm.py
файл в каталоге моего проекта:
import datetime
from django.core.mail import send_mail
from django.shortcuts import render
today = datetime.date.today()
weekday = today.weekday()
def send_mm_email(???):
subject = 'Hello'
message = 'Hi there'
if (weekday == 4):
send_mail(
subject,
message,
'something@from.com',
['user@xy.com'],
fail_silently=False,
)
print('Friday, mails sent')
else:
print('Not Friday')
return render(???)
Заранее благодарю, если вы сможете мне помочь!
Вы можете использовать django-q,
https://django-q.readthedocs.io/en/latest/
он прост в использовании и поставляется с интеграцией админ-панели django, вам нужно отдельно запустить сервер qcluster и использовать поле crontab для создания задания cron.Чтобы создать задание на каждую пятницу в 11:00 .используйте
0 11 * * 5
в поле crontab в панели администратора django или вы также можете создать его через код, следуйте руководству.