python - 如何在 post_save 中发送电子邮件而不要求用户等待表单提交?
问题描述
这是我的 post_save 方法:
from asgiref.sync import sync_to_async
@receiver(post_save, sender=SubmissionDetails)
def create_submission_email(sender, instance, created, **kwargs):
if created:
data = sync_to_async(call_submssion_email(instance))
def call_manuscript_submssion_email(instance):
print("Hi")
message = '''Submitted with the title, <br>
{0}'''.format(instance.title)
subject = 'Article Submitted'
to_address = 'example@gmail.com'
from_address = "from@mail.example.com"
msg = EmailMessage(
subject, message,from_address,[to_address]
)
msg.content_subtype = "html"
msg.send()
问题是在提交表单时,用户必须等到发送电子邮件才能看到结果。我正在使用带有一些异步支持的 django 3.0。
解决方案
异步支持
Django 3.0 中的新功能
Django 正在开发对异步(“async”)Python 的支持,但还不支持异步视图或中间件;他们将在未来的版本中出现。
对异步生态系统其他部分的支持有限;即,Django 可以原生支持 ASGI,以及一些异步安全支持。
您可以将 Django Channels或Celery用于您的异步代码。
您还可以查看Django 频道与 celery 有何不同?
推荐阅读
- javascript - 如何将嵌套数据分配给新变量?
- r - 尝试将特定功能应用于我的数据
- python - 非常大范围内随机排列的元素索引
- javascript - Bootstrap:让文本在文本输入字段周围流动
- java - 如何在 NetBeans 生成的代码上修复“线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常”?
- r-markdown - Knitr 和/或 Kableextra:全局表选项?
- c# - Jqgrid 无法在我的 SQL 服务器实例中添加、编辑或删除,我认为它甚至没有点击添加、编辑或删除功能
- html - 与 CSS 网格重叠的段落
- python - 如何在 seaborn 的条形图中的误差线上绘制标准误差?
- google-apps-script - 循环内的 setvalue 命令