背景: 我曾经在一个自动化测试平台中集成定时任务,基于 APScheduler 库花了好长时间解决重复执行的问题。定时任务集成在服务中也让服务变得复杂。最后,我们选择了公司其他团队go语言开发的一个定时任务服务。于是萌生了想法,和不用 Python实现一个通用的定时任务服务。于是,schedule-server应运而生。
GitHub地址: https://github.com/SeldomQA/schedule-server
schedule-server 特点
- 运行与部署简单。
- 基于HTTP触发请求。
- 支持三种类型的定时任务:
crontab
、interval
、date
- 支持定时任务的
查询
、删除
、添加
、暂停/恢复
等操作。
schedule-server 架构图
schedule_server
: 核心功能是定时触发HTTP请求。fontend
: 通过前端UI管理定时任务。you server
: 在你的服务中通过调接口的方式管理定时任务。SQLite
: 用于保存定时任务服务。Redis
: 通过Redis锁解决重复触发的问题。
安装与运行
安装依赖
> cd schedule_server
> pip install -r requirements.txt
开发运行
> uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['/.../schedule-server/schedule_server']
INFO: Uvi