基于rq的简单python库,用于存储django发送的电子邮件并在后台与工作人员一起处理

django-rq-mail的Python项目详细描述


django rq mail是一个简单的python库,基于rq来存储发送的电子邮件 通过Django并在后台与工人一起处理它们。

由于django rq邮件基于rq,所以它完全由Redis支持。

架构

django rq mail添加了新的元素来享受Sorted SetsRedis开始。

对于django rq邮件,它实现了^{tt1}的概念$ 它用时间戳来延迟作业的处理。

rq的默认行为是通过BLPOP处理作业 当没有要从任何给定队列中弹出的元素时阻止连接。 有了这种行为,就没有办法延迟作业的处理,当它失败时 rq将其放入失败的队列中。 当然,您可以稍后重新申请此作业,但没有回退机制。

在django rq邮件中,您可以定义回退步骤(以秒为单位),以重试作业,直到 这不是失败。当一项工作在每个步骤上都经过测试后,我们重新引入 rq在将其推入失败队列时的默认行为。

每个步骤都将创建一个等待队列,当作业失败时,我们将执行 当前时间戳和增量,以便将来重试。

http://yuml.me/895ce159

这种机制可以通过ZADD来实现 在队列中添加带有分数和ZREVRANGEBYSCORE的序列化作业 返回排序集中得分介于max(当前时间戳)和min之间的所有元素。

正如您所理解的,我们已经放弃了默认的阻塞行为 替换为每秒钟运行的守护进程。

安装

  1. GitHub中签出包,或者通过pypi从发行版中提取包

    pip install django-rq-mail
    
  2. 向您的INSTALLED_APPS

    添加“rq_邮件”
    INSTALLED_APPS = (
        'rq_mail',
    )
    

使用django rq mail提供的rq_mail命令(通过django命令行)。

此命令是rqDjango的最小集成,以启动 dispatcher

  1. 定义EMAIL_BACKEND

    EMAIL_BACKEND = 'rq_mail.backends.RqBackend'
    
  2. 定义RQ_MAIL_EMAIL_BACKEND用于发送电子邮件的后端,例如

    RQ_MAIL_EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    

日志记录

rq 0.3.3使用标准python的logging,这意味着 您可以在django中轻松配置rqworker的日志记录机制 settings.py。例如:

LOGGING={'version':1,'disable_existing_loggers':False,'formatters':{'rq_console':{'format':'%(asctime)s%(message)s','datefmt':'%H:%M:%S',},},'handlers':{'rq_console':{'level':'DEBUG','class':'rq.utils.ColorizingStreamHandler','formatter':'rq_console','exclude':['%(asctime)s'],},},'loggers':{'rq.worker':{'handlers':['rq_console'],'level':'DEBUG'},}}

利用率

一旦安装好,就可以从shell运行python manage.py rq_mail

配置

RQ_MAIL_PREFIX

用于命名Django RQ邮件创建的所有队列的前缀。

RQ_MAIL_MAIN_QUEUE

主队列的名称。

RQ_MAIL_EMAIL_BACKEND

电子邮件后端用于在后台处理电子邮件时发送电子邮件。

RQ_MAIL_REDIS_HOST

用来连接的redis主机。

RQ_MAIL_REDIS_PORT

用来连接的redis端口。

^ {tt15}$

用来连接的redis数据库。

RQ_MAIL_REDIS_PASSWORD

用于连接的redis密码。

RQ_MAIL_REDIS_URL

用于连接的redis url。

RQ_MAIL_REDIS_SOCKET

用来连接的redis套接字。

RQ_MAIL_FALLBACK_STEPS

创建等待队列的时间的简单列表。

您可以定义任意多个步骤,每个步骤都将转换为一个队列。 因此,如果定义了10个步骤,您将允许一条消息失败10次,直到它 将进入失败队列。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中两个ArrayList的内部联接   java如何制作按钮侦听器组方法?   Java位表示法中的字节、字符和int   java如何测试控制台输出代码?   JAXB在编组java时将xmlns添加到元素中   java 安卓 Web服务调用问题   java从按钮中选择多个正确答案   java如何获取sensu服务器事件数据   java如何在编写时添加分隔符。使用openCSV的csv文件   在fedora 23上通过jnlp运行jenkins slave的java问题   如何从java web应用程序创建http可见文件?   java如何在安卓中通过编程改变矢量绘图的颜色   java为什么我总是得到未初始化的变量x?   无法从java/Android Studio中的网站获取数据   ArrayList实现在Java中的最低级别是如何工作的?   java告诉SAX解析器忽略无效字符?   java无法使用JarSplice创建可运行的LWJGL jar   java解析一个包含许多字段的json对象   用于Command+T的java JavaFX密钥组合(新选项卡)   java StreamAPI收集器。groupingBy空集合而不是null