CN113448749A - 一种优化执行预期定时任务的方法、系统、设备及介质 - Google Patents
一种优化执行预期定时任务的方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN113448749A CN113448749A CN202110626621.0A CN202110626621A CN113448749A CN 113448749 A CN113448749 A CN 113448749A CN 202110626621 A CN202110626621 A CN 202110626621A CN 113448749 A CN113448749 A CN 113448749A
- Authority
- CN
- China
- Prior art keywords
- task
- timing task
- expected timing
- execution
- expected
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种优化执行预期定时任务的方法、系统、设备和存储介质,方法包括:响应于接收到异步任务,判断所述异步任务是否为预期定时任务;响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。本发明基于Redis的键空间消息的发布与订阅模式,通过重定义异步任务调用模块,对Celery的预期定时任务执行模块完成优化。
Description
技术领域
本发明涉及任务处理领域,更具体地,特别是指一种优化执行预期定时任务的方法、系统、计算机设备及可读介质。
背景技术
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工作进程进行执行。
在一些实施方式中,方法还包括:响应于保存于所述Redis中的所述预期定时任务到期,将所述预期定时任务的消息发送到到期通道。
在一些实施方式中,方法还包括:基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:在Redis到期通道监听进程中设置监听子进程和工作子进程,并建立消息队列。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述监听子进程订阅并监听所述到期通道,将从所述到期通道中获取的消息推送到所述消息队列。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述工作子进程监听所述消息队列,响应于从所述消息队列获取到消息,判断所述消息中的所述键是否为所述预期定时任务专属标志;以及响应于所述消息中的所述键为所述预期定时任务专属标志,将所述预期定时任务发送到Celery工作进程进行执行。
本发明实施例的另一方面,提供了一种优化执行预期定时任务的系统,包括:第一判断模块,配置用于响应于接收到异步任务,判断所述异步任务是否为预期定时任务;第二判断模块,配置用于响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;执行模块,配置用于响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及调整模块,配置用于计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明具有以下有益技术效果:基于Redis的键空间消息的发布与订阅模式,在Celery任务发布时自动拦截预期执行时间超过超时配置的预期定时任务并将其存入Redis中,利用Redis到期机制将即将执行的预期定时任务发送到监听队列,由自定义工作进程重新发送至Celery的工作进程中执行,从根源上解决预期定时任务重复执行的问题,提高系统稳定性与安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的优化执行预期定时任务的方法的实施例的示意图;
图2为本发明提供的优化执行预期定时任务的方法的实施例的流程图;
图3为本发明提供的优化执行预期定时任务的方法的实施例中处理预期定时任务的流程图;
图4为本发明提供的优化执行预期定时任务的计算机设备的实施例的硬件结构示意图;
图5为本发明提供的优化执行预期定时任务的计算机存储介质的实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
本发明实施例的第一个方面,提出了一种优化执行预期定时任务的方法的实施例。图1示出的是本发明提供的优化执行预期定时任务的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
S1、响应于接收到异步任务,判断所述异步任务是否为预期定时任务;
S2、响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;
S3、响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及
S4、计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
Celery是一种Python开发的分布式队列的管理工具,可通过接口快速实现并管理分布式的任务队列。Redis(Remote Dictionary Server,远程数据服务)是一种开源的、支持网络、可基于内存亦可持久化Key-Value(键值对)数据库,同时亦可作为消息队列使用。ETA是预期定时任务,Celery异步任务的一种模式,在异步执行任务时,指定任务延时或定时执行时间。
本发明主要解决Celery中预期定时任务重复执行的短板,使得Celery中的预期定时任务仅执行一次,确保在需要执行大量预期定时任务时系统的稳定性。
本发明实施例通过重定义Celery中的发送任务方法(send_task),判断预期定时任务的预期执行时刻与当前时刻的差值,与Celery设置的超时时间进行对比,将超时的任务的ID与参数信息按约定格式的KEY存入Redis中并设置KEY的超时时间为任务预期执行时间减去一定时间(如3秒),开启Redis的消息过期订阅通道,将指定格式的过期数据发布到指定的通道中。在启动Celery服务时,新启动ETA处理进程,进程监听过期通道,获取通道中的任务信息,再重新发送到Celery的任务执行队列中,完成ETA任务的执行。利用Redis的KEY到期机制,在即将到达ETA任务执行时间时再将任务发布至Celery的执行队列中真正执行,避免出现超过Celery超时时间时任务重复执行的问题。
首先,准备Python环境,Python环境中完成Celery及其配套消息队列软件的安装(如:RabbitMQ或Redis)与缓存服务(Redis)的安装。将新封装的任务发送模块与通道监听模块引入到工程中,并启动Celery服务应用进程。
响应于接收到异步任务,判断所述异步任务是否为预期定时任务。响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间。例如,预期定时任务的执行时刻为16:00,当前时刻为15:00,则第一差值为执行时刻与当前时刻的差值60min(分),如果预设时间为30min,则第一差值超过预设时间。响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志。计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。继续上例,第一差值30min和预设时间60min的第二差值为30min,则第三差值为第二差值30min和预设数值的差值,预设数值可以是3s(秒)或者5s。
图2示出的是本发明提供的优化执行预期定时任务的方法的实施例的流程图。如图2所示,从框101开始,然后执行框102,上层应用系统调用封装的异步任务发送对象执行任务,然后执行框103,任务发送对象接收到任务后,先生成任务ID。然后执行框104,判断是否为Celery的预期定时任务,如果是,则执行框105,计算当前时刻与ETA预期执行时间的第一差额;接着执行框106,判断第一差额与Celery超时时间的第二差额是否大于零,如果是,则执行框107,将任务ID与参数存入Redis中,设置KEY为预期定时任务标志,然后执行框108,设置参数到期时间为第二差额减去固定值,确保Redis提前将任务发布至ETA进程;入股否,则执行框109,调用Celery原生任务发送方法,发送至Celery工作进程执行。
在一些实施方式中,方法还包括:响应于所述预期定时任务的执行时刻与当前时刻的第一差值不超过所述预设时间,将所述预期定时任务发送到Celery工作进程进行执行。
在一些实施方式中,方法还包括:响应于保存于所述Redis中的所述预期定时任务到期,将所述预期定时任务的消息发送到到期通道。
在一些实施方式中,方法还包括:基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:在Redis到期通道监听进程中设置监听子进程和工作子进程,并建立消息队列。启动Redis到期通道监听常驻进程,在进程启动后启动两个子进程:一个为监听子进程进程,另一个为工作子进程,并使用Python中的队列模块(Queue)建立消息队列,用以提高消息处理效率。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述监听子进程订阅并监听所述到期通道,将从所述到期通道中获取的消息推送到所述消息队列。监听子进程链接Redis开启过期通知服务(命令如:redis-cli config set notify-keyspace-events Ex),订阅到期通道(如:PSUBSCRIBE__keyevent@*__:expired),并使用listen的方式监听到期通道,将收到的数据统一push(推送)到消息队列中。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述工作子进程监听所述消息队列,响应于从所述消息队列获取到消息,判断所述消息中的所述键是否为所述预期定时任务专属标志;以及响应于所述消息中的所述键为所述预期定时任务专属标志,将所述预期定时任务发送到Celery工作进程进行执行。工作子进程监听消息队列,从消息队列中获取到消息后,判断KEY是否为Celery的ETA任务标识(如:CELERY_ETA_{TOKEN_ID},其中TOKEN_ID为每个Celery任务的ID),如果是,则调用Celery原生的任务发送方法(send_task)将任务发送给Celery的工作进程中执行。
图3示出的是本发明提供的优化执行预期定时任务的方法的实施例中处理预期定时任务的流程图。如图3所示,从框201开始,然后执行框202,启动Celery任务工作服务进程,并启动预期定时任务处理流程,然后执行框203,在ETA处理进程中分别启动监听子进程和工作子进程,创建消息队列,工作子进程监听消息队列;然后执行框204,监听子进程链接Redis服务,开启过期通知服务,订阅到期通道并使用Listen的方式监听频道,然后执行框205,Redis将过期的Key自动推送到到期通道,监听子进程收到数据后,将任务数据Push到消息队列中,然后执行框206,工作子进程从消息队列中获取数据,然后执行框207,判断是否为Celery的预期定时任务,如果是,则执行框208,调用Celery原生任务发送方法,将任务ID与参数发送至Celery工作进程中执行,如果否,则饭后框206。
本发明基于Redis的键空间消息的发布与订阅模式,通过重定义异步任务调用模块,对Celery的预期定时任务执行模块完成优化,确保预期定时任务在发布时仅发布一次,不会重新发布与执行,提升了使用Celery框架的系统的稳定性与安全性。
需要特别指出的是,上述优化执行预期定时任务的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于优化执行预期定时任务的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种优化执行预期定时任务的系统,包括:第一判断模块,配置用于响应于接收到异步任务,判断所述异步任务是否为预期定时任务;第二判断模块,配置用于响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;执行模块,配置用于响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及调整模块,配置用于计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
在一些实施方式中,系统还包括第一发送模块,配置用于:响应于所述预期定时任务的执行时刻与当前时刻的第一差值不超过所述预设时间,将所述预期定时任务发送到Celery工作进程进行执行。
在一些实施方式中,系统还包括第二发送模块,配置用于:响应于保存于所述Redis中的所述预期定时任务到期,将所述预期定时任务的消息发送到到期通道。
在一些实施方式中,系统还包括处理模块,配置用于:基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理。
在一些实施方式中,所述处理模块配置用于:在Redis到期通道监听进程中设置监听子进程和工作子进程,并建立消息队列。
在一些实施方式中,所述处理模块配置用于:基于所述监听子进程订阅并监听所述到期通道,将从所述到期通道中获取的消息推送到所述消息队列。
在一些实施方式中,所述处理模块配置用于:基于所述工作子进程监听所述消息队列,响应于从所述消息队列获取到消息,判断所述消息中的所述键是否为所述预期定时任务专属标志;以及响应于所述消息中的所述键为所述预期定时任务专属标志,将所述预期定时任务发送到Celery工作进程进行执行。
基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:S1、响应于接收到异步任务,判断所述异步任务是否为预期定时任务;S2、响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;S3、响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及S4、计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
在一些实施方式中,步骤还包括:响应于所述预期定时任务的执行时刻与当前时刻的第一差值不超过所述预设时间,将所述预期定时任务发送到Celery工作进程进行执行。
在一些实施方式中,步骤还包括:响应于保存于所述Redis中的所述预期定时任务到期,将所述预期定时任务的消息发送到到期通道。
在一些实施方式中,步骤还包括:基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:在Redis到期通道监听进程中设置监听子进程和工作子进程,并建立消息队列。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述监听子进程订阅并监听所述到期通道,将从所述到期通道中获取的消息推送到所述消息队列。
在一些实施方式中,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:基于所述工作子进程监听所述消息队列,响应于从所述消息队列获取到消息,判断所述消息中的所述键是否为所述预期定时任务专属标志;以及响应于所述消息中的所述键为所述预期定时任务专属标志,将所述预期定时任务发送到Celery工作进程进行执行。
如图4所示,为本发明提供的上述优化执行预期定时任务的计算机设备的一个实施例的硬件结构示意图。
以如图4所示的装置为例,在该装置中包括一个处理器301以及一个存储器302,并还可以包括:输入装置303和输出装置304。
处理器301、存储器302、输入装置303和输出装置304可以通过总线或者其他方式连接,图4中以通过总线连接为例。
存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的优化执行预期定时任务的方法对应的程序指令/模块。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的优化执行预期定时任务的方法。
存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据优化执行预期定时任务的方法的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置303可接收输入的用户名和密码等信息。输出装置304可包括显示屏等显示设备。
一个或者多个优化执行预期定时任务的方法对应的程序指令/模块存储在存储器302中,当被处理器301执行时,执行上述任意方法实施例中的优化执行预期定时任务的方法。
执行上述优化执行预期定时任务的方法的计算机设备的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上方法的计算机程序。
如图5所示,为本发明提供的上述优化执行预期定时任务的计算机存储介质的一个实施例的示意图。以如图5所示的计算机存储介质为例,计算机可读存储介质4存储有被处理器执行时执行如上方法的计算机程序41。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,优化执行预期定时任务的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种优化执行预期定时任务的方法,其特征在于,包括以下步骤:
响应于接收到异步任务,判断所述异步任务是否为预期定时任务;
响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;
响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及
计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
2.根据权利要求1所述的方法,其特征在于,方法还包括:
响应于所述预期定时任务的执行时刻与当前时刻的第一差值不超过所述预设时间,将所述预期定时任务发送到Celery工作进程进行执行。
3.根据权利要求1所述的方法,其特征在于,方法还包括:
响应于保存于所述Redis中的所述预期定时任务到期,将所述预期定时任务的消息发送到到期通道。
4.根据权利要求3所述的方法,其特征在于,方法还包括:
基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理。
5.根据权利要求4所述的方法,其特征在于,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:
在Redis到期通道监听进程中设置监听子进程和工作子进程,并建立消息队列。
6.根据权利要求5所述的方法,其特征在于,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:
基于所述监听子进程订阅并监听所述到期通道,将从所述到期通道中获取的消息推送到所述消息队列。
7.根据权利要求6所述的方法,其特征在于,所述基于Redis到期通道监听进程获取所述到期通道的消息以对所述预期定时任务进行处理包括:
基于所述工作子进程监听所述消息队列,响应于从所述消息队列获取到消息,判断所述消息中的所述键是否为所述预期定时任务专属标志;以及
响应于所述消息中的所述键为所述预期定时任务专属标志,将所述预期定时任务发送到Celery工作进程进行执行。
8.一种优化执行预期定时任务的系统,其特征在于,包括:
第一判断模块,配置用于响应于接收到异步任务,判断所述异步任务是否为预期定时任务;
第二判断模块,配置用于响应于所述异步任务为预期定时任务,判断所述预期定时任务的执行时刻与当前时刻的第一差值是否超过预设时间;
执行模块,配置用于响应于所述预期定时任务的执行时刻与当前时刻的第一差值超过所述预设时间,将所述预期定时任务的ID与参数信息存入Redis中,并设置键为所述预期定时任务专属标志;以及
调整模块,配置用于计算所述第一差值与所述预设时间的第二差值,并设置所述键的超时时间为所述第二差值与预设数值的第三差值。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110626621.0A CN113448749B (zh) | 2021-06-04 | 2021-06-04 | 一种优化执行预期定时任务的方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110626621.0A CN113448749B (zh) | 2021-06-04 | 2021-06-04 | 一种优化执行预期定时任务的方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448749A true CN113448749A (zh) | 2021-09-28 |
CN113448749B CN113448749B (zh) | 2023-03-24 |
Family
ID=77810828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110626621.0A Active CN113448749B (zh) | 2021-06-04 | 2021-06-04 | 一种优化执行预期定时任务的方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448749B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722075A (zh) * | 2021-10-29 | 2021-11-30 | 苏州浪潮智能科技有限公司 | 一种任务管理方法、系统、设备及存储介质 |
CN113975815A (zh) * | 2021-11-04 | 2022-01-28 | 上海鱼尔网络科技有限公司 | 任务转移方法、系统、装置、设备、存储介质和程序产品 |
CN114428682A (zh) * | 2022-01-23 | 2022-05-03 | 苏州浪潮智能科技有限公司 | 一种超时任务处理方法、系统、存储介质及设备 |
CN114721740A (zh) * | 2022-04-06 | 2022-07-08 | 平安国际融资租赁有限公司 | 消息触发方法、装置、设备及存储介质 |
CN116028544A (zh) * | 2023-03-30 | 2023-04-28 | 山东爱特云翔计算机有限公司 | 基于openstack的定时任务动态添加方法 |
CN116662394A (zh) * | 2023-07-12 | 2023-08-29 | 唐山银耐联电子商务有限公司 | 一种基于Java的响应优先式缓存加载方法 |
CN114721740B (zh) * | 2022-04-06 | 2024-07-05 | 平安国际融资租赁有限公司 | 消息触发方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110202924A1 (en) * | 2010-02-17 | 2011-08-18 | Microsoft Corporation | Asynchronous Task Execution |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN108762911A (zh) * | 2018-06-13 | 2018-11-06 | 平安科技(深圳)有限公司 | 定时任务管理方法、装置、计算机设备及存储介质 |
CN109298951A (zh) * | 2018-08-21 | 2019-02-01 | 平安科技(深圳)有限公司 | Celery任务的执行方法及终端设备 |
CN111338802A (zh) * | 2020-02-29 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种优化大数据集群性能的方法、系统、设备及介质 |
CN112068973A (zh) * | 2020-09-09 | 2020-12-11 | 深圳乐信软件技术有限公司 | 策略模式的异步信息处理方法、装置、服务器和存储介质 |
CN112506624A (zh) * | 2020-10-29 | 2021-03-16 | 望海康信(北京)科技股份公司 | 定时任务调度系统、方法及相应计算机设备和存储介质 |
-
2021
- 2021-06-04 CN CN202110626621.0A patent/CN113448749B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110202924A1 (en) * | 2010-02-17 | 2011-08-18 | Microsoft Corporation | Asynchronous Task Execution |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN108762911A (zh) * | 2018-06-13 | 2018-11-06 | 平安科技(深圳)有限公司 | 定时任务管理方法、装置、计算机设备及存储介质 |
CN109298951A (zh) * | 2018-08-21 | 2019-02-01 | 平安科技(深圳)有限公司 | Celery任务的执行方法及终端设备 |
CN111338802A (zh) * | 2020-02-29 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种优化大数据集群性能的方法、系统、设备及介质 |
CN112068973A (zh) * | 2020-09-09 | 2020-12-11 | 深圳乐信软件技术有限公司 | 策略模式的异步信息处理方法、装置、服务器和存储介质 |
CN112506624A (zh) * | 2020-10-29 | 2021-03-16 | 望海康信(北京)科技股份公司 | 定时任务调度系统、方法及相应计算机设备和存储介质 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722075A (zh) * | 2021-10-29 | 2021-11-30 | 苏州浪潮智能科技有限公司 | 一种任务管理方法、系统、设备及存储介质 |
CN113722075B (zh) * | 2021-10-29 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种任务管理方法、系统、设备及存储介质 |
CN113975815A (zh) * | 2021-11-04 | 2022-01-28 | 上海鱼尔网络科技有限公司 | 任务转移方法、系统、装置、设备、存储介质和程序产品 |
CN113975815B (zh) * | 2021-11-04 | 2022-12-23 | 上海鱼尔网络科技有限公司 | 任务转移方法、系统、装置、设备、存储介质 |
CN114428682A (zh) * | 2022-01-23 | 2022-05-03 | 苏州浪潮智能科技有限公司 | 一种超时任务处理方法、系统、存储介质及设备 |
CN114428682B (zh) * | 2022-01-23 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种超时任务处理方法、系统、存储介质及设备 |
CN114721740A (zh) * | 2022-04-06 | 2022-07-08 | 平安国际融资租赁有限公司 | 消息触发方法、装置、设备及存储介质 |
CN114721740B (zh) * | 2022-04-06 | 2024-07-05 | 平安国际融资租赁有限公司 | 消息触发方法、装置、设备及存储介质 |
CN116028544A (zh) * | 2023-03-30 | 2023-04-28 | 山东爱特云翔计算机有限公司 | 基于openstack的定时任务动态添加方法 |
CN116662394A (zh) * | 2023-07-12 | 2023-08-29 | 唐山银耐联电子商务有限公司 | 一种基于Java的响应优先式缓存加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113448749B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113448749B (zh) | 一种优化执行预期定时任务的方法、系统、设备及介质 | |
KR20200012981A (ko) | 네트워크 슬라이스 관리 방법, 디바이스 및 컴퓨터 판독 가능 저장 매체 | |
US9532359B2 (en) | Resource allocation method and device | |
CN111367693B (zh) | 基于消息队列调度插件任务的方法、系统、设备及介质 | |
WO2022148254A1 (zh) | 一种用户信息分析结果反馈方法及其装置 | |
CN109614164B (zh) | 实现插件可配置的方法、装置、设备及可读存储介质 | |
CN111935017B (zh) | 跨网络的应用调用方法、装置及路由设备 | |
CN115550354A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
EP3996345A1 (en) | Method for configuring priority level, cloud platform, system, computing device, and medium | |
CN114285849A (zh) | 限流状态的调整方法和装置、存储介质及电子装置 | |
CN101551758B (zh) | 一种实现设备管理任务并行工作的系统和方法 | |
CN109144676A (zh) | 一种应用程序的自启动检测方法、装置及服务器 | |
CN101175315B (zh) | 一种控制移动台进行更新的方法及其系统 | |
CN107425994B (zh) | 一种实现参数远程管理的方法、终端和服务器 | |
WO2023159956A1 (zh) | 一种裸金属服务器检查及部署方法、装置、设备、介质 | |
CN115509714A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN103944802A (zh) | 控制移动设备使用Exchange邮箱的方法及装置 | |
CN116980410A (zh) | 服务框架切换方法、装置、设备及存储介质 | |
CN111176959A (zh) | 跨域的应用服务器的预警方法、系统及存储介质 | |
CN113535402A (zh) | 基于5g mec的负载均衡处理方法、装置及电子设备 | |
Ayeb et al. | Coordinated autonomic loops for target identification, load and error-aware Device Management for the IoT | |
CN114979250B (zh) | 消息推送方法、装置和设备 | |
CN101964922B (zh) | 异常情况捕捉方法及装置 | |
CN113498120B (zh) | 节能指示方法、装置及计算机存储介质 | |
CN111654480B (zh) | 一种rpc连接建立方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |