美文网首页
python | 定时异步调度系统的实现

python | 定时异步调度系统的实现

作者: 君子月满楼 | 来源:发表于2018-01-22 08:06 被阅读125次

    说起异步调度系统,大家肯定第一时间想到celery,但是celery是一个重量级的模块,当我们只想异步调度,没有其他需求的时候,完全可以自己实现一个异步调度系统。

    那么如何实现自己的异步调度系统呢?

    1.实现自己的消息队列
    2.任务提交模块

    1. 任务调度处理模块
      4.结果提取模块
      5.如果是定时任务,还可以实现一个定时提交模块

    消息队列:
    可以使用Kafka、redis、也可以自己实现是一个存放任务的队列,队列里一般传入函数名,参数。

    任务提交模块:
    将任务相关信息传入消息队列。
    任务相关信息通常可以有:

    1. 函数名
      2.参数
    2. 正常完成的回调函数
    3. 异常完成的回调函数

    结果调度模块:
    需要考虑的事情:
    1)如果要实现多个工作者处理任务,那么工作者是选择线程、还是子进程比较好?
    个人想法:如果是i/o密集型任务,选择线程即可;如果是计算型任务,选择进程。如果选择进程实现工作者,还是要考虑工作者管理者模块进程是否需要成为守护进程。

    2)调度方案
    每个任务是那个哪个工作者空闲就哪个工作者处理,还是指定工作者。(笔者选择的是最简单的调度方案)

    3)任务的结果处理
    如果任务执行异常,需要什么操作。
    如果任务执行正常,结果需要写在哪里?

    定时模块
    这篇文章写的比较清楚,可以参考这篇文章
    https://www.cnblogs.com/LinTeX9527/p/6181523.html

    相关文章

      网友评论

          本文标题:python | 定时异步调度系统的实现

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