使用celery的异步Django电子邮件后端
项目描述
Django电子邮件后端,使用Celery队列进行消息的带外发送。
使用django-celery-email
要为您的项目启用django-celery-email,您需要将djcelery_email添加到INSTALLED_APPS
INSTALLED_APPS += ("djcelery_email",)
然后必须将django-celery-email设置为您的EMAIL_BACKEND
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
默认情况下,django-celery-email将使用Django内置的SMTP电子邮件后端发送邮件。如果您想使用其他后端,您可以在CELERY_EMAIL_BACKEND中设置它,就像您通常在开始使用Celery之前设置EMAIL_BACKEND一样。实际上,正常的安装程序很可能是先通过Django使邮件工作,然后将EMAIL_BACKEND更改为CELERY_EMAIL_BACKEND,然后添加上面的新EMAIL_BACKEND设置。
群发邮件以大小为CELERY_EMAIL_CHUNK_SIZE(默认为10)的块发送。
如果您需要设置通常可以在自己编写的Celery任务类中设置的任何设置(属性),您可以在CELERY_EMAIL_TASK_CONFIG设置中的dict中指定它们。
CELERY_EMAIL_TASK_CONFIG = { 'queue' : 'email', 'rate_limit' : '50/m', # * CELERY_EMAIL_CHUNK_SIZE (default: 10) ... }
有一些默认设置。除非您指定了其他设置,否则以下设置的等效值将适用
CELERY_EMAIL_TASK_CONFIG = { 'name': 'djcelery_email_send', 'ignore_result': True, }
完成此设置后,如果您有可正常工作的Celery安装,发送邮件将完全像之前一样工作,只是发送将由您的Celery工作进程处理。
from django.core import mail emails = ( ('Hey Man', "I'm The Dude! So that's what you call me.", 'dude@aol.com', ['mr@lebowski.com']), ('Dammit Walter', "Let's go bowlin'.", 'dude@aol.com', ['wsobchak@vfw.org']), ) results = mail.send_mass_mail(emails)
results将是一个包含celery AsyncResult对象的列表,您可以忽略它们,或者使用它们来检查邮件投递任务的状态,或者如果您想等待其完成,甚至可以等待其完成。如果您想使用这些,您必须启用结果后端,并在CELERY_EMAIL_TASK_CONFIG中将ignore_result设置为False。如果您关心任务状态和结果,应在设置中将CELERY_EMAIL_CHUNK_SIZE = 1。
有关更多信息,请参阅Celery文档。
len(results)将是您尝试发送的电子邮件数除以CELERY_EMAIL_CHUNK_SIZE的结果,并且这并不反映它们的投递成功或失败。
变更日志
3.0.0 - 2019.12.10
支持Django 3.0
支持Python 3.8
删除了对Django 1.x、Django 2.0和Django 2.1的支持
删除了对Python 2.7的支持
2.0.2 - 2019.05.29
通过在块上运行email_to_dict来减少内存使用。感谢Paul Brown。
简化dict_to_email以提高可读性和效率。感谢Paul Brown。
更新了Django、Celery和Python支持版本的测试矩阵。感谢James。
2.0.1 - 2018.18.27
修复了阻止发送text/*编码的MIME附件的bug。感谢Cesar Canassa。
2.0 - 2017.07.10
支持Django 1.11和Celery 4.0
删除了对Celery 2.x和3.x的支持
删除了对Python 3.3的支持
1.1.5 - 2016.07.20
通过CELERY_EMAIL_MESSAGE_EXTRA_ATTRIBUTES设置支持额外的电子邮件属性
更新了README中的版本要求
1.1.4 - 2016.01.19
支持发送包含嵌入式图像的电子邮件。感谢Georg Zimmer。
记录了CELERY_EMAIL_CHUNK_SIZE。感谢Jonas Haag。
在电子邮件后端连接中添加了异常处理。感谢Tom。
1.1.3 - 2015.11.06
支持从字符串设置celery.base。感谢Matthew Jacobi。
使用six实现py2/3字符串兼容性。感谢Matthew Jacobi。
将content_subtype返回用于重试。感谢Mark Joshua Tan。
重新设计测试工作方式,添加tox,重新设计travis-ci矩阵。
从django.utils中使用six。
发布通用wheel。
1.1.2 - 2015.07.06
修复了仅HTML电子邮件的bug。感谢gnarvaja。
1.1.1 - 2015.03.20
修复了任务kwarg处理的向后兼容性问题 - 感谢Jeremy Thurgood。
1.1.0 - 2015.03.06
新的PyPI版本汇总了1.0.5更改和一些清理。
在任务中提供更多的向后兼容性。仍然可以接受消息对象和消息对象列表。
再次感谢为1.0.5做出贡献的每个人。
1.0.5 - 2014.08.24
Django 1.6支持、Travis CI测试、分块发送等 - 感谢Jonas Haag。
支持HTML电子邮件 - 感谢Andres Riancho。
支持Celery的JSON传输,由DigiACTive赞助。
删除了对Django 1.2的支持。
1.0.4 - 2013.10.12
添加了对Django 1.5.2和Python 3的支持。
感谢 Stefan Wehrmeyer 的贡献。
1.0.3 - 2012.03.06
后端现在会将初始化时传入的所有 kwargs 传递给邮件发送后端。
感谢 Fedor Tyurin 的贡献。
1.0.2 - 2012.02.21
任务和后端现在接受 kwargs,这些 kwargs 可用于信号处理程序。
任务现在从邮件发送后端返回结果。
感谢 Yehonatan Daniv 对这些更改的贡献。
1.0.1 - 2011.10.06
修复了一个导致抛出错误的任务报告成功的错误。
如果发送邮件后端抛出异常,任务的结果现在将是这个异常。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪一个,请了解有关 安装包 的更多信息。
源分布
构建分布
django-celery-email-3.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5546cbba80952cc3b8a0ffa4206ce90a4a996a7ffd1c385a2bdb65903ca18ece |
|
MD5 | 9f7daff5236fee43ba2b358be94f6297 |
|
BLAKE2b-256 | 487895c9959978c1b8abd587735cf084065b0ac8196580f6f30b2c9e9636401a |
django_celery_email-3.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f72da39cb2ea83c69440566e87f27cd72f68f247f98ce99fb29889fcf329406 |
|
MD5 | b2a3e5c8404dc14da04309d5b1ed94c7 |
|
BLAKE2b-256 | 872f0120d868a2c2919afaed34c73c9c4f8c9208262668fa0218f330cfda3e18 |