跳转到主要内容

使用celery的异步Django电子邮件后端

项目描述

https://img.shields.io/travis/pmclanahan/django-celery-email/master.svg https://img.shields.io/pypi/v/django-celery-email.svg

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 (12.6 kB 查看哈希值)

上传时间

构建分布

django_celery_email-3.0.0-py2.py3-none-any.whl (9.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面