python轻量级定时任务库cron-lite

本文介绍了在Python中使用cron-lite库创建轻量级定时任务服务的需求和背景。作者在寻找支持cron表达式、轻量级且与bottle框架风格相似的定时任务库未果后,决定基于croniter和sched自封装了一个库cron-lite。该库支持Python3.6及以上版本,通过装饰器方式注册定时任务,易于使用,且仅依赖croniter。文章还展示了如何非阻塞启动任务和优雅退出任务循环的方法,并提供了源码链接。
摘要由CSDN通过智能技术生成

我在用bottle搭建轻量测试服务的时候,除了api,也需要一个定时任务服务。我希望定时服务和bottle的装饰器风格保持类似,并且支持cron表达式,支持一定的安全机制(例如任务超时时队列不要溢出),然后依赖应该尽可能轻量。
调研一圈发现:

sched是系统自带库,无额外依赖。虽然支持定时任务,但对定时的支持很弱,不支持cron表达式,也不支持循环重入和自动调度

apscheduler支持比较完善,可以做到任务的并发调度和超时规避,也支持cron表达式化的任务。但是这个库比较大,依赖比较重,用起来也不是足够简洁(不像bottle的路由注册那么轻量)

还有不少cron库支持cron表达式,但是却是操作的系统的crontab,对系统有侵入,不满足我定时任务作为业务服务的场景

croniter支持计算cron表达式和下次的调度时间,但是却不支持执行任务

综合上述,我并没有找到特别适合的轻量定时任务框架,所以就利用croniter和sched,自己封装了一个库并上传到了pypi(想上传自己的库,可参考这里,我的另一篇文章)

目前支持python3.6或以上版本,可以用pip安装

pip install cron-lite

使用比较简单,直接装饰就可以把函数变成定时任务执行

from cron_lite import cron_task, start_all
import time


@cron_task("* * * * * 0/2")
def event1():
    print("event1", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值