我是Django的新手,我正在为uni项目创建一个Web应用程序。我必须定期发送电子邮件,并且这样做是使用管理命令,但是我不知道如何在启动服务器时使其自动运行。 我正在Windows 8.1中开发Pycharm
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每n分钟重复一次send_email,但是没有任何效果,并且在线搜索后发现Windows不支持cron(和基于cron的)。但这是另一个问题...
答案 0 :(得分:1)
您可以将芹菜用于定期任务。只需将功能handle
转换为celery任务,就可以在该任务上安排cron作业。
您可以参考:https://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html