Как запустить управление командами, когда сервер работает? - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в Django и создаю веб-приложение для Uni Project.Я должен периодически отправлять электронные письма, и для этого я использую команду управления, но я не знаю, как заставить ее автоматически запускаться при запуске сервера.Я работаю над Pycharm в Windows 8.1

from django.core.mail import send_mail
from django.core.management.base import BaseCommand
from ProgettoDinamici.settings import EMAIL_HOST_USER
from products.models import Notification
from users.models import User

class Command(BaseCommand):
    help = 'Sends emails periodically'

    def handle(self, *args, **options):
        users = User.objects.all()
        for u in users:
            try:
                notify = Notification.objects.filter(receiver=u, read=False)
                count = notify.count()
            except:
                print("No notification found")
            try:
                if notify:
                    send_mail(
                        'E-Commerce',
                        'You have ' + str(count) + ' notifications.',
                        EMAIL_HOST_USER,
                        [u.email],
                        fail_silently=False,
                    )
            except:
                print("error")

Пока я пытался использовать schedule и cron для повторения send_email каждые n минут, но ничего не помогло, и при поиске в Интернете я обнаружил, что cron (и на основе cron) не поддерживается Windows.Но это еще одна проблема ...

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете использовать сельдерей для периодических задач.Просто преобразуйте функцию handle в задачу сельдерея, и вы можете запланировать задания cron для этих задач.

Вы можете обратиться: https://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

...