美文网首页
轻量级任务队列—Huey(2)

轻量级任务队列—Huey(2)

作者: 要读博士 | 来源:发表于2017-08-24 16:31 被阅读0次

    概述

    huey是一个轻量级任务队列,它是用Python开发的,仅仅依赖Python的redis客户端。支持以下功能:

    1、支持多进程,多线程,协程任务模型

    2、支持在给定时间或者给定延迟之后执行任务

    3、支持像crontab一样建立周期任务

    4、支持失败后自动重试任务

    5、支持任务结果存储。

    官方文档为:https://huey.readthedocs.io/en/latest/getting-started.html

    Huey内部分析

    下面我们来分析Huey内部以及Huey源码,这使我们更加清晰Huey的使用。Huey的源码主要集中在comsumer部分。因此,我们主要来看consumer.py的实现。

    首先consumer主要有三个部分组成:

    1、主要的处理函数

    2、调度器

    3、执行器(workers)

    这三个组件负责接收、调度、以及执行:

    1、当你调用一个被huey装饰的函数时,它会将一条消息放入队列。同时,应用将会立即返回一个TaskResultWrapper对象。

    2、在消费者进程中,执行者(workers)将会监听新的消息,然后其中一个执行者将会接收你的消息然后指令任务在某个时间,带上某个参数去执行它。

    3、在守护进程中,执行者关差消息,并时刻检查他是否被暂停(revoked)或者是否被延迟调度。如果被暂停,该消息就会被丢弃。如果该消息被延迟调度,它讲会加入调度队列。否则会被执行。

    4、执行者线程执行任务。如果任务完成,结果将会被发布。如果任务失败,消费者进程将会检查该任务是否被重试。如果任务可以被重试,消费者将检查该任务是否配置了等待时间。依赖这个配置,huey将会重新将任务入队执行。

    相关文章

      网友评论

          本文标题:轻量级任务队列—Huey(2)

          本文链接:https://www.haomeiwen.com/subject/hmtldxtx.html