一个轻量级的分布式定时任务调度平台-Cloudtask

Cloudtask是一款轻量级的分布式定时任务管理平台,支持任务的上传、启动/暂停、克隆及执行日志查看等功能。采用前后端分离设计,利用Zookeeper实现集群间的发现与协调,具备良好的可扩展性和故障转移能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CloudTask

什么是Cloudtask?

Cloudtask 是一个轻量级的分布式定时任务管理平台,它非常轻量小巧,使用简单,我们可以上传、暂停/启动任务,克隆一个任务,修改任务的执行命令,或者查看任务的调度状态、执行日志,开发人员可以采用自己最熟悉的编程语言来编写任务程序,可以是一个控制台程序,也可以是一段 shell 脚本,上传至平台后设置定时执行规则即可。

设计方案


Cloudtask采用前后端分离设计,后端为无状态服务,通过 `Zookeeper` 实现集群各节点间的发现与协调,节点以心跳方式注册到注册中心,中心服务器统一管理着所有集群,任务调度以集群方式进行分配,具有良好的可扩展性,任务分配信息按集群划分并将分配数据存储到 `Zookeeper` 节点,保持分配数据的一致性。

项目主页

https://github.com/Cloudtask/cloudtask

更多文档

https://cloudtask.github.io/cloudtask

演示地址

http://104.225.159.143:8091

主要特性

- 分布式:采用 `Zookeeper` 实现注册中心,节点与任务分布;
- 跨平台:支持 `Windows` 和 `Linux` 两个平台的部署;
- 任务定时:严格按照任务调度周期执行,同一时间点同一任务只会调度触发一次执行,保持状态一致性;
- 任务控制:可以随时手动启动、停止某一个任务;
- 并行调度:集群中各个节点并行调度本地各自的任务;
- 弹性扩展:节点以环型结构组成集群,加入退出集群更灵活,部分任务会根据节点重新分配;
- 故障转移:当出现节点故障宕机时,为避免集群任务调整抖动,只对故障节点的任务进行转移;
- 运维管理:通过前端站点集中管理所有任务与集群信息,包括用户权限管理;
- 事件通知:若任务执行失败,或集群节点离线,系统会以事件邮件通知运维者;
- 信息收集:节点会将任务执行结果回馈到中心服务器,日志展示更直观;

- 稳定保障:在服务器无波动的情况下,并不会重新分配任务;

组件介绍

- CloudTask InitConfig
- CloudTask Web
- CloudTask Center

- CloudTask Agent

功能预览

前端登录


Dashboard


集群状态


任务列表


License

Cloudtask 基于 Apache Licence 2.0 构建.

开发语言

Golang,TpyeScript

在Python中开发分布式定时任务可以通过结合使用多种工具和技术来完成。以下是一些常用的方案: ### 1. 使用 Celery + Redis/MQ Celery是一个强大的分布式任务队列系统,它可以用来调度和执行定时任务。 #### 安装依赖库 ```bash pip install celery redis ``` #### 配置Celery应用 ```python from celery import Celery import datetime app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def my_scheduled_task(): print(f"Task executed at {datetime.datetime.now()}") # 在其他文件或命令行启动worker # celery -A your_module_name worker --loglevel=info ``` #### 设置周期性任务(beat) 创建`celeryconfig.py` ```python from celery.schedules import crontab CELERY_BEAT_SCHEDULE = { 'run-every-ten-minutes': { 'task': 'my_app.my_scheduled_task', 'schedule': crontab(minute="*/10"), }, } CELERY_TIMEZONE = 'UTC' ``` 运行Beat服务: ```shell celery -A your_celery_config beat # 可以与worker分开部署 ``` ### 2. APScheduler APScheduler是另一个轻量级但功能齐全的任务计划库,它支持内存、数据库持久化等存储后端选择,并且易于集成进Web应用程序中如Flask/Django框架里边去。 安装: ```bash pip install apscheduler sqlalchemy pymysql # 如果想用SQLAlchemy做jobstore的话还需额外安转这两个包 ``` 简单示例代码如下所示: ```python from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore if __name__ == '__main__': job_stores = { 'default': SQLAlchemyJobStore(url='mysql+pymysql://user:passwd@host/db') } scheduler = BackgroundScheduler(jobstores=job_stores) def job_function(): print("Hello World") trigger_time = "your custom time rule here" scheduler.add_job(job_function, 'cron', hour=trigger_time.split(':'), minute=trigger_time.split(':')) try: scheduler.start() while True: pass except (KeyboardInterrupt, SystemExit): scheduler.shutdown() ``` 对于更复杂的业务场景还可以考虑采用Kubernetes CronJobs或者其他云服务商提供的托管式解决方案比如AWS Lambda+CloudWatch Events等等...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值