我想安排在某个选定日期发送电子邮件。我怎样才能在 DRF 中做到这一点?
I want to schedule the email send for some choosen date . How can I do that in DRF?
我想以收件人邮箱地址和预定日期为输入,按预定日期发送邮件。我在 views.py 中有以下代码行
实际上我很期待在 django 中使用 apscheduler 包进行 异步后台任务 但是 任何建议和解决方案都是可取的.
class SendMailView(APIView):
def post(self, request, *args, **kwargs):
'''
POST Method for sending Email
'''
send_to = request.data.get('receiver_email')
schedule_for = request.data.get('schedule_date')
email_plaintext_message = " Hello"
send_mail(
# title:
"Test mail,
# message:
email_plaintext_message,
# from:
'some@gmail.com,
# to:
[send_to]
)
return Response({"status":"Email Send"},status=status.HTTP_200_OK)
考虑使用 Celery。
您需要做的就是跟随安装,启动一个worker和beat,然后您就可以调度任务了。
task.py
from celery import shared_task
@shared_task
def sendScheduledEmail(email_to):
#do your stuff
然后在您的 API POST 上安排:
sendScheduledEmail.apply_async([email_to],eta=datetime.datetime(2021, 07, 06, 09, 30))
我没有对此进行测试,所以如果您有任何错误请告诉我
我想以收件人邮箱地址和预定日期为输入,按预定日期发送邮件。我在 views.py 中有以下代码行 实际上我很期待在 django 中使用 apscheduler 包进行 异步后台任务 但是 任何建议和解决方案都是可取的.
class SendMailView(APIView):
def post(self, request, *args, **kwargs):
'''
POST Method for sending Email
'''
send_to = request.data.get('receiver_email')
schedule_for = request.data.get('schedule_date')
email_plaintext_message = " Hello"
send_mail(
# title:
"Test mail,
# message:
email_plaintext_message,
# from:
'some@gmail.com,
# to:
[send_to]
)
return Response({"status":"Email Send"},status=status.HTTP_200_OK)
考虑使用 Celery。 您需要做的就是跟随安装,启动一个worker和beat,然后您就可以调度任务了。
task.py
from celery import shared_task
@shared_task
def sendScheduledEmail(email_to):
#do your stuff
然后在您的 API POST 上安排:
sendScheduledEmail.apply_async([email_to],eta=datetime.datetime(2021, 07, 06, 09, 30))
我没有对此进行测试,所以如果您有任何错误请告诉我