CN111984440A - 一种Celery在线管理及自动执行任务的方法、系统和存储介质 - Google Patents

一种Celery在线管理及自动执行任务的方法、系统和存储介质 Download PDF

Info

Publication number
CN111984440A
CN111984440A CN202010957851.0A CN202010957851A CN111984440A CN 111984440 A CN111984440 A CN 111984440A CN 202010957851 A CN202010957851 A CN 202010957851A CN 111984440 A CN111984440 A CN 111984440A
Authority
CN
China
Prior art keywords
task
execution
celery
function
queue
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.)
Withdrawn
Application number
CN202010957851.0A
Other languages
English (en)
Inventor
徐基法
邓淮谦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202010957851.0A priority Critical patent/CN111984440A/zh
Publication of CN111984440A publication Critical patent/CN111984440A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种Celery在线管理及自动执行任务的方法、系统和存储介质,涉及计算机软件应用技术领域。所述方法基于Celery分布式框架,在Web中自定义任务并保存在数据库中,然后在线触发任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,接下来使用Celery异步执行方法与Python动态执行方法进行自定义任务执行,实现任务逻辑在线变更及实时生效的需求。本发明方案在解决了现有技术中Celery无法在线创建注册任务且必须重启Celery服务才可执行任务的问题,以更加简便快捷的方式实现任务管理,缩减了系统的升级流程,提高了系统的稳定性及运维效率。

Description

一种Celery在线管理及自动执行任务的方法、系统和存储 介质
技术领域
本发明实施例涉及计算机软件应用技术领域,具体来说涉及一种Celery在线管理及自动执行任务的方法、系统和存储介质。
背景技术
Celery是一种Python开发的分布式队列的管理工具,可通过接口快速实现并管理一个分布式的任务队列。Celery作为一种分布式异步框架,具有高可用、简单、快速及灵活等特点,多被用以处理实时异步任务或周期性轮询任务,例如服务器数据采集、异步执行远程命令等多种场景。
现有技术中,Celery任务注册方式主要通过在后台脚本文件中提前定义任务函数名及代码逻辑,在启动Celery服务后将带有指定注解的方法名注册到Celery中,便于后续Worker进程获取任务并执行。但其存在下述不足之处:一方面使用Celery后端静态注册任务信息的方式,在任务逻辑或参数更新时,必须要求开发或运维人员变更代码并进行代码升级发布,且必须要重启Celery服务才能生效最新代码。这种方式无法有效支持需要频繁修改代码逻辑或任务参数的应用场景,且增加了开发运维人员的工作复杂度。另一方面,重启Celery服务可能会强制中断正在执行的任务进程,无法保证系统稳定运行。
发明内容
本发明实施例提供了一种Celery在线管理及自动执行任务的方法、系统和存储介质,基于Celery分布式框架及Python动态语言特性,将自定义任务执行逻辑配置在数据库中,实现自定义任务的异步执行,提高系统运维效率。
为实现上述目的,本发明公开了如下技术方案:
本发明一方面提供一种Celery在线管理及自动执行任务的方法,所述方法包括以下步骤:
在Web中自定义任务并保存在数据库中,在线触发任务执行请求;
接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行。
基于上述方案,进一步的,所述基于Celery异步执行方法与Python动态执行方法进行自定义任务执行,包括下述步骤:
引用公共执行函数,通过Celery异步执行函数将任务相关信息作为执行参数发送至指定任务队列;
Worker进程从指定任务队列中获取任务信息,利用Python动态定义函数将函数字符串转换为可调用函数;
从任务信息中获取执行函数参数传入可调用函数,自动执行任务逻辑。
进一步的,所述在Web中自定义任务并保存在数据库中,在线触发任务执行请求,包括下述步骤:
登录Web服务新建执行函数,并将函数数据保存至后端执行函数数据表中;
新建执行任务,选择执行函数并输入函数参数信息,并将数据保存至后端任务表中;
在Web界面中选择执行任务,触发任务执行请求。
进一步的,所述在Web中自定义任务之前,还包括下述步骤:
准备Python环境,并在Python环境中进行Celery及其组件的安装;
配置Celery调度引擎,启动Web服务与Celery服务进程。
本发明另一方面提供一种Celery在线管理及自动执行任务的系统,所述系统包括任务管理模块和任务执行模块;
任务管理模块,用以管理任务信息,操作人员在任务管理模块中自定义任务并保存在数据库中,然后在线触发任务执行请求,进入任务执行模块;
任务执行模块,接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行。
基于上述装置,进一步的,所述任务管理模块包括:
函数管理单元,用以新建执行函数,将函数数据保存至后端执行函数数据表中;
任务管理单元,用以新建执行任务,选择执行函数输入函数参数信息,并将数据保存至后端任务表中;
任务触发单元,用以在Web界面中选择执行任务,触发任务执行请求。
进一步的,所述任务执行模块包括:
任务队列创建单元,用以接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程;
Celery异步执行单元,通过Celery异步执行函数将任务相关信息作为执行参数发送至指定任务队列;
Python动态执行单元,利用Python动态定义函数将Worker进程从指定任务队列中获取的任务信息由函数字符串转换为可调用函数;
任务自动执行单元,用以从任务信息中获取执行函数参数传入可调用函数,自动执行任务逻辑。
此外,本发明还提供一种计算机存储介质,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行如上所述的Celery在线管理及自动执行任务的方法。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本申请实施例提供的一种Celery在线管理及自动执行任务的方法,基于Celery分布式框架,在Web中自定义任务并保存在数据库中,然后在线触发任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,接下来使用Celery异步执行方法与Python动态执行方法进行自定义任务执行,实现任务逻辑在线变更及实时生效的需求。本实施例方案在每次任务执行时均从数据库中取得最新代码块,再由后端公共任务执行方法转换为可执行函数,因此操作人员在Web界面修改任务代码逻辑及参数时,无需重启服务即可保证执行的为最新任务,解决了现有技术中Celery无法在线创建注册任务且必须重启Celery服务才可执行任务的问题,以更加简便、快捷的方式实现任务管理,缩减了系统的升级流程,提高了系统的稳定性及运维效率。
本申请实施例提供的一种Celery在线管理及自动执行任务的系统和存储介质,能够实现上述的Celery在线管理及自动执行任务的方法,并取得上文所述的技术效果。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种Celery在线管理及自动执行任务的方法流程示意图;
图2为图1中步骤S3的实现过程流程示意图;
图3为图1中步骤S4的实现过程流程示意图;
图4为本申请实施例提供的一种Celery在线管理及自动执行任务的系统结构示意图。
具体实施方式
为使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1示出了本发明实施例一种Celery在线管理及自动执行任务的方法流程图示意图。
参照图1,本实施例的方法,包括以下步骤:
S1、准备Python环境,并在Python环境中进行Celery及其组件的安装,例如安装消息队列软件RabbitMQ或Redis等;
S2、配置Celery调度引擎,启动Web服务与Celery服务进程;
S3、在Web中自定义任务并保存在数据库中,在线触发任务执行请求;
S4、接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行;
S5、在Web页面中展示自定义任务的执行结果。
具体的,如图2所示,所述步骤S3中,在Web中自定义任务并保存在数据库中,在线触发任务执行请求,包括下述步骤:
S31、登录Web服务进入函数管理模块,新建执行函数并输入函数数据,包括函数描述、函数名称、函数参数、函数逻辑代码等要素,将函数数据保存至后端执行函数数据表FunctionsModel中;
S32、新建执行任务,选择执行函数输入函数参数信息,例如任务描述、函数执行参数等信息,并将数据保存至后端任务表TasksModel中;
S33、在Web界面中选择执行任务,触发任务执行请求。
进一步的,如图3所示,所述步骤S4中,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行,包括下述步骤:
S41、接收任务执行请求后,根据任务ID建立任务队列,并为任务队列动态启动Worker执行进程,在本实施例中,Worker启动命令可参考如下命令:
【celery worker-A web-n worker_{queue_name}@%h-c 2-Q{queue_name}-linfo-f$LOGDIR/celery_work_{queue_name}.log&】,其中,{queue_name}为动态队列名称。
S42、引用公共执行函数CommTask,使用Celery提供的异步执行函数apply_async将任务相关信息,如任务ID及执行函数ID,作为CommTask执行参数发送至Worker任务队列;
S43、Worker进程从任务队列中获取任务参数信息,在CommTask中根据执行函数ID检索出对应的函数名称、函数代码等,将其封装为统一的函数字符串,然后调用Python动态定义函数eval或compile,将函数字符串转换为可调用函数对象;
S44、从任务信息中获取执行函数参数传入可调用函数对象,自动执行任务逻辑。
当用户在Web界面中修改执行函数的代码逻辑时,因后台任务每次都是根据函数ID动态获取最新的自定义代码,故无需重启Worker即可实时生效,实时执行最新代码逻辑。
图4示出了本发明实施例一种Celery在线管理及自动执行任务的系统结构示意图。
参照图4,本实施例的系统包括:
任务管理模块1,用以管理任务信息,操作人员在任务管理模块中自定义任务并保存在数据库中,然后在线触发任务执行请求,进入任务执行模块;
任务执行模块2,接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行。
具体来说,如图中所示,在本实施例系统中,任务管理模块1配置为包括:
函数管理单元,用以新建执行函数,将函数数据保存至后端执行函数数据表中;
任务管理单元,用以新建执行任务,选择执行函数输入函数参数信息,并将数据保存至后端任务表中;
任务触发单元,用以在Web界面中选择执行任务,触发任务执行请求。
进一步的,如图中所示,任务执行模块2配置为包括:
任务队列创建单元,用以接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程;
Celery异步执行单元,通过Celery异步执行函数将任务相关信息作为执行参数发送至指定任务队列;
Python动态执行单元,利用Python动态定义函数将Worker进程从指定任务队列中获取的任务信息由函数字符串转换为可调用函数;
任务自动执行单元,用以从任务信息中获取执行函数参数传入可调用函数,自动执行任务逻辑。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行上述实施例中的Celery在线管理及自动执行任务的方法。
本申请实施例提供的一种Celery在线管理及自动执行任务的系统和存储介质中未详述的内容,可参照上述实施例中提供的Celery在线管理及自动执行任务的方法,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限定本发明,对于本技术领域的技术人员来说,在不脱离本发明原理的前提下所作的任何修改、改进和等同替换等,均包含在本发明的保护范围内。

Claims (8)

1.一种Celery在线管理及自动执行任务的方法,其特征在于,包括以下步骤:
在Web中自定义任务并保存在数据库中,在线触发任务执行请求;
接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行。
2.根据权利要求1所述的一种Celery在线管理及自动执行任务的方法,其特征在于,所述基于Celery异步执行方法与Python动态执行方法进行自定义任务执行,包括下述步骤:
引用公共执行函数,通过Celery异步执行函数将任务相关信息作为执行参数发送至指定任务队列;
Worker进程从指定任务队列中获取任务信息,利用Python动态定义函数将函数字符串转换为可调用函数;
从任务信息中获取执行函数参数传入可调用函数,自动执行任务逻辑。
3.根据权利要求1所述的一种Celery在线管理及自动执行任务的方法,其特征在于,所述在Web中自定义任务并保存在数据库中,在线触发任务执行请求,包括下述步骤:
登录Web服务新建执行函数,并将函数数据保存至后端执行函数数据表中;
新建执行任务,选择执行函数输入函数参数信息,并将数据保存至后端任务表中;
在Web界面中选择执行任务,触发任务执行请求。
4.根据权利要求1所述的一种Celery在线管理及自动执行任务的方法,其特征在于,所述在Web中自定义任务之前,还包括下述步骤:
准备Python环境,并在Python环境中进行Celery及其组件的安装;
配置Celery调度引擎,启动Web服务与Celery服务进程。
5.一种Celery在线管理及自动执行任务的系统,其特征在于,包括任务管理模块和任务执行模块;
任务管理模块,用以管理任务信息,操作人员在任务管理模块中自定义任务并保存在数据库中,然后在线触发任务执行请求,进入任务执行模块;
任务执行模块,接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程,然后基于Celery异步执行方法与Python动态执行方法进行自定义任务执行。
6.根据权利要求5所述的一种Celery在线管理及自动执行任务的系统,其特征在于,所述任务管理模块包括:
函数管理单元,用以新建执行函数,将函数数据保存至后端执行函数数据表中;
任务管理单元,用以新建执行任务,选择执行函数输入函数参数信息,并将数据保存至后端任务表中;
任务触发单元,用以在Web界面中选择执行任务,触发任务执行请求。
7.根据权利要求5所述的一种Celery在线管理及自动执行任务的系统,其特征在于,所述任务执行模块包括:
任务队列创建单元,用以接收任务执行请求,为请求任务创建任务队列并为任务队列启动Worker进程;
Celery异步执行单元,通过Celery异步执行函数将任务相关信息作为执行参数发送至指定任务队列;
Python动态执行单元,利用Python动态定义函数将Worker进程从指定任务队列中获取的任务信息由函数字符串转换为可调用函数;
任务自动执行单元,用以从任务信息中获取执行函数参数传入可调用函数,自动执行任务逻辑。
8.一种计算机存储介质,其特征在于,所述计算机存储介质中包含有程序指令,当所述程序指令在计算机设备上运行时,使得计算机设备执行如权利要求1至4任一项所述的Celery在线管理及自动执行任务的方法。
CN202010957851.0A 2020-09-11 2020-09-11 一种Celery在线管理及自动执行任务的方法、系统和存储介质 Withdrawn CN111984440A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010957851.0A CN111984440A (zh) 2020-09-11 2020-09-11 一种Celery在线管理及自动执行任务的方法、系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010957851.0A CN111984440A (zh) 2020-09-11 2020-09-11 一种Celery在线管理及自动执行任务的方法、系统和存储介质

Publications (1)

Publication Number Publication Date
CN111984440A true CN111984440A (zh) 2020-11-24

Family

ID=73449323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010957851.0A Withdrawn CN111984440A (zh) 2020-09-11 2020-09-11 一种Celery在线管理及自动执行任务的方法、系统和存储介质

Country Status (1)

Country Link
CN (1) CN111984440A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486654A (zh) * 2020-12-08 2021-03-12 浙江诺诺网络科技有限公司 一种异步慢任务调度方法、装置、设备及介质
CN113157411A (zh) * 2021-03-31 2021-07-23 北京睿芯高通量科技有限公司 一种基于Celery的可靠可配置任务系统及装置
CN113722075A (zh) * 2021-10-29 2021-11-30 苏州浪潮智能科技有限公司 一种任务管理方法、系统、设备及存储介质
CN114253742A (zh) * 2021-12-09 2022-03-29 上海精鲲计算机科技有限公司 一种无服务器框架分布式执行方法及系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486654A (zh) * 2020-12-08 2021-03-12 浙江诺诺网络科技有限公司 一种异步慢任务调度方法、装置、设备及介质
CN113157411A (zh) * 2021-03-31 2021-07-23 北京睿芯高通量科技有限公司 一种基于Celery的可靠可配置任务系统及装置
CN113157411B (zh) * 2021-03-31 2024-04-12 北京中科通量科技有限公司 一种基于Celery的可靠可配置任务系统及装置
CN113722075A (zh) * 2021-10-29 2021-11-30 苏州浪潮智能科技有限公司 一种任务管理方法、系统、设备及存储介质
CN113722075B (zh) * 2021-10-29 2022-02-18 苏州浪潮智能科技有限公司 一种任务管理方法、系统、设备及存储介质
CN114253742A (zh) * 2021-12-09 2022-03-29 上海精鲲计算机科技有限公司 一种无服务器框架分布式执行方法及系统

Similar Documents

Publication Publication Date Title
CN111984440A (zh) 一种Celery在线管理及自动执行任务的方法、系统和存储介质
EP3842948A2 (en) Method and apparatus for testing edge computing, device, and readable storage medium
CN105487892B (zh) 一种Linux环境下的云中GIS服务部署系统
CN109284106A (zh) 业务规则的发布管理方法、电子装置及可读存储介质
CN114205230B (zh) 云原生网元的配置方法、系统、介质及电子设备
CN116301951B (zh) 一种基于kubernetes的微服务应用安装升级方法及装置
CN112882863A (zh) 恢复数据的方法、装置、系统和电子设备
CN115687486A (zh) 一种基于kettle的轻量级数据采集方法及设备
CN112631705B (zh) 物联网设备列表渲染方法、设备、系统及可读存储介质
CN116938958A (zh) Api信息同步方法、装置、系统与计算机可读存储介质
CN109190969B (zh) 称重设备管控方法、系统、称重设备管理中间件及介质
CN114443239A (zh) 一种注入容器的方法及装置
CN114610446B (zh) 一种自动注入探针的方法、装置及系统
CN115061797B (zh) 一种Quartz组件的调用方法及装置
CN113504916B (zh) 一种代码更新方法和装置、计算机设备及介质
CN114090242A (zh) 模型训练方法、装置、设备、存储介质及程序产品
CN112685051A (zh) 自动执行shell脚本的方法、装置、平台及存储介质
CN113791819A (zh) 接口文档生成方法和装置、存储介质、电子设备
CN111274053A (zh) 一种通过nova调用qemu guest agent接口的方法
CN112583933B (zh) 参数运行方法、装置、设备及存储介质
CN110727457A (zh) 组件管理方法、装置、存储介质及电子设备
CN113326035B (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN117251250B (zh) 基于云原生平台的容器管理方法及相关设备
CN114095495B (zh) 终端控制方法、设备、存储介质及装置
CN118606024A (zh) 一种平台即服务的统一接入方法、装置、电子设备及介质

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20201124

WW01 Invention patent application withdrawn after publication