[发明专利]一种优化执行预期定时任务的方法、系统、设备及介质有效
| 申请号: | 202110626621.0 | 申请日: | 2021-06-04 |
| 公开(公告)号: | CN113448749B | 公开(公告)日: | 2023-03-24 |
| 发明(设计)人: | 徐基法;张悦;刘超 | 申请(专利权)人: | 山东英信计算机技术有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54 |
| 代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰;陈黎明 |
| 地址: | 250101 山东省济南市高新区*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 优化 执行 预期 定时 任务 方法 系统 设备 介质 | ||
本发明公开了一种优化执行预期定时任务的方法、系统、设备和存储介质,方法包括:响应于接收到异步任务,判断所述异步任务是否为预期定时任务;响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。本发明基于Redis的键空间消息的发布与订阅模式,通过重定义异步任务调用模块,对Celery的预期定时任务执行模块完成优化。
技术领域
本发明涉及任务处理领域,更具体地,特别是指一种优化执行预期定时任务的方法、系统、计算机设备及可读介质。
背景技术
Celery是一个异步任务调度工具,采用分布式任务队列模式,支持高并发执行海量任务,Celery的架构由消息中间件(一般是Redis或RabbitMQ)、任务执行单元(工作进程)和任务执行结果存储(存储数据库)三部分组成,多被用来执行异步或定时任务,例如:服务器内存、CPU、Memory使用数据采集,或异步发起向指定服务器执行某条命令等多种场景。
现有技术中,Celery异步执行ETA任务,主要通过Celery自带的apply_async函数,采用指定参数eta(数值为日期datetime类型)或countdown(延时执行,数值为整型数值)的方式,Celery会在预定时间到达时,将任务发送到队列中,交由工作进程执行,实现ETA(Tstimated Time of Arrival,预期定时任务)落地执行。
使用Celery执行预期定时任务时,当ETA设定的时间与当前时间差超过了Celery参数配置的任务最大超时时间(visibility_timeout),Celery的自动重发机制会识别出任务没有执行,并将任务重新分配到其他Work(工作)进程中执行,造成同一个预期定时任务被重复执行。当存在大量超过超时配置的预期定时任务时,易造成消息队列阻塞(如Redis),影响其他任务无法正常执行,严重的可能造成Redis内存溢出等情况,降低系统稳定性。
此外,Celery提供一种插件(Celery_Once),利用Redis分布式锁的原理,确保每个任务只能执行一次,其原理为:在任务发送至队列前,根据任务ID(标识),生成唯一key(键)并放入Redis中存储,当任务重复分配时,通过判断key是否已存在确认,若存在则拒绝重新放入队列中。但这种方法无法向上兼容(要求Celery版本4.0),且没有在源头解决任务重复执行的问题,且当任务的超时时长超过key的超时时间时将会失效(此时Redis中的key已消失)。
发明内容
有鉴于此,本发明实施例的目的在于提出一种优化执行预期定时任务的方法、系统、计算机设备及计算机可读存储介质,本发明基于Redis的键空间消息的发布与订阅模式,通过重定义异步任务调用模块,对Celery的预期定时任务执行模块完成优化,确保预期定时任务在发布时仅发布一次,不会重新发布与执行,提升了使用Celery框架的系统的稳定性与安全性。
基于上述目的,本发明实施例的一方面提供了一种优化执行预期定时任务的方法,包括如下步骤:响应于接收到异步任务,判断所述异步任务是否为预期定时任务;响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
在一些实施方式中,方法还包括:响应于所述预期定时任务的执行时刻与当前时刻的第一差值不超过所述预设时间,将所述预期定时任务发送到Celery工作进程进行执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东英信计算机技术有限公司,未经山东英信计算机技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110626621.0/2.html,转载请声明来源钻瓜专利网。





