Как отправлять еженедельные электронные письма по расписанию в 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 или вы также можете создать его через код, следуйте руководству.

Вернуться на верх