当前位置: 首页 > news >正文

后端简易定时任务框架选择(Python/Go)--gocron

文章目录

      • 前言
      • 实现
      • 后语

前言

  在使用Python的web框架中,包括flask/Django,其中大量用到celery;celery作为异步任务使用的多,同时也会用celery来跑些定时任务,比如每晚定时跑脚本、跑数据统计等闲时任务。但随着任务量的增多,celery的弊端就暴露,比如不支持很好的可视化(flower实属基类),比如任务异常失败了无从排查,比如定时任务异常未执行无从排查
  此时就需要引入新的定时任务框架来支持,但要求是:

  1. 框架简单,可以轻松接入
  2. 支持良好的可视化
  3. 支持多节点任务执行
  4. 支持任务以来
  5. 支持任务失败告警
  6. 支持任务日志可查

实现

  定时任务框架的选择很多,比如:

1.airflow: Python框架,具备worker容灾,支持DAG的任务依赖,支持可视化,但相对复杂,且任务一多性能下降
地址: https://github.com/apache/airflow
2.dolphinscheduler: Java框架,具备容灾,支持DAG的任务依赖,但相对复杂,且任务一多性能下降
地址: https://github.com/apache/dolphinscheduler 
3.cronsun: Golang框架,具备容灾,不支持任务依赖,具备可视化,配置简单
地址: https://github.com/shunfei/cronsun

  但这里推介的是gocron框架,这个框架满足前文里的6点要求,同时相对前两种,有配置简单,功能够用;相对后一种,支持任务依赖,具备更好的可视化。缺点则是不支持DAG的任务依赖,另外则是2020年后没有再更新,因为是个人项目,所以未再维护。
  框架地址:https://github.com/ouqiang/gocron
  之所以推介该框架,是因为工作上用了2年多,也很稳定,如果没有额外的新需求,则是非常值得一用。
  gocron分为server和node两个服务,server就是调度和配置,node则是具体执行的节点,简单配置,可以server和node都配置在同一台机子,前者监听5920端口,后者监听5921端口。
  虽然其支持docker部署,但一般node执行时需要执行宿主机的任务,所以docker执行不方便;而server自身同时具备命令行和web的功能(实际上是将前端vue框架嵌入了go二进制),其可以用docker快速部署。

后语

  gocron最大的问题是没有后续维护了,但一些易用性上完全可以优化,我这边也做了相应的优化,在后续里发出来。另外可以通过配置systemctl的配置使其支持开机自动重启,这样在节点机器维护的时候,也能正常重启

http://www.lryc.cn/news/58909.html

相关文章:

  • 【GStreamer学习】之GStreamer基础教程
  • 各类Round-Robin总结,含Verilog实现
  • 《软件设计师-知识点》
  • mysql 同义词_数据库中的同义词synonym
  • Nacos共享配置
  • 数据结构——排序(4)
  • C++13:搜索二叉树
  • 【从零开始学Skynet】基础篇(五):简易聊天室
  • HDU - 2089 不要62(数位DP)
  • 网络安全与防御
  • 【DT】蒸脱机的结构和工作原理
  • Docker管理软件
  • 关于运行时内存数据区的一些扩展概念
  • 计算机组成原理第二章数据的表示与运算(中)
  • 我的第一台电脑的故事
  • 【1041. 困于环中的机器人】
  • 几何算法——4.交线(intersection curve)的表达与参数化、微分性质
  • 【GPT】让你事半功倍特别好用的5个GPT工具
  • 人工智能大模型多场景应用原理解析
  • SpringBoot默认包扫描机制与默认配置文件
  • RabbitMq 消息可靠性问题(一) --- publisher发送时丢失
  • Java初识泛型
  • 寸照换底色技巧大全,超详细图文教程
  • 这篇文章价值很大:股票历史分时成交数据怎么简单获取?【干货】
  • muduo源码剖析--Buffer
  • AI人工智能简介和其定义
  • python数据清洗
  • Python3 os.makedirs() 方法、Python3 os.read() 方法
  • 【Linux安装数据库】Ubuntu安装mysql并连接navicat
  • GaussDB工作级开发者认证—第一章GaussDB数据库介绍