环境:

  • celery 4.3
  • flask
  • python 3.7
  • linux

需求:

  动态添加定时任务,且方便维护。

解决思路:

  参考django-celery 或是celery源码,将定时任务配置放置到数据库中,从而维护数据达到动态定时任务到效果。

  定时任务对应的是beat, beat将产生task给worker.beat的scheduler是可以定制的,通过BEAT_SCHEDULER将其传入。

定制scheduler:

  查看Scheduler源码可知

  

def get_schedule(self):
return self.data def set_schedule(self, schedule):
self.data = schedule

  

get_schedule可以写成从数据库中获取,set_schedule写成将任务写入数据库中

 需要注意的是last_run_at,beat 将通过这个值来确定任务下次运行时间。

总成品:

最新文章

  1. 协议分析 - DHCP协议解码详解
  2. 决策树的python实现
  3. Linux上如何执行java程序
  4. 移动 Web 触摸与运动解决方案 AlloyTouch 开源啦
  5. 单例模式singleton
  6. MapKit 添加大头针
  7. C#关于导出excel的方法
  8. flot_js_$用法解释
  9. akka简单示例-2
  10. STM32串口控制步进电机(原创)
  11. dig挖出DNS的秘密
  12. jq封装
  13. Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由
  14. opencv3中SurfFeatureDetector、SurfDescriptorExtractor、BruteForceMatcher的使用
  15. VS2010工程结构及其瘦身策略
  16. UCCI协议[转]
  17. python 解压zip压缩包
  18. [vundle]利用vundle工具来管理vim插件
  19. Mybatis 一对多 简单映射配置
  20. Siddhi cep java 集成简单使用

热门文章

  1. 【DM8168学习笔记4】ezsdk安装过程记录
  2. 【DM642学习笔记八】色度重采样
  3. Python的格式化输出--制作名片
  4. Luogu P2577 [ZJOI2005]午餐(dp)
  5. Leetcode221. Maximal Square最大正方形
  6. Java集合(七)--基于jdk1.8的HashMap源码
  7. 15分钟构建超低成本数据大屏:DataV + DLA
  8. js的模块化写法
  9. Nginx 编译设置模块执行顺序
  10. 初探 jQuery