[发明专利]Celery任务管理方法、系统、设备及存储介质有效
申请号: | 202010099042.0 | 申请日: | 2020-02-18 |
公开(公告)号: | CN111324474B | 公开(公告)日: | 2023-04-18 |
发明(设计)人: | 姜贤富 | 申请(专利权)人: | 上海携程商务有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 上海隆天律师事务所 31282 | 代理人: | 夏彬 |
地址: | 200335 上海市长*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | celery 任务 管理 方法 系统 设备 存储 介质 | ||
本发明提供了一种Celery任务管理方法、系统、设备及存储介质,该方法包括:接收用户输入的任务创建信息,所述任务创建信息包括任务名称、任务对应的业务逻辑函数名称和任务参数;创建新任务,调用预设的任务模板,将所述任务创建信息填入所述任务模板,生成新任务的任务脚本;根据所述任务对应的业务逻辑函数名称,建立任务与包括对应的业务逻辑函数的代码文件的对应关系;将所述新任务加入Celery的任务队列,所述新任务的任务脚本执行时自动调用所对应的代码中所对应的业务逻辑函数。采用本发明的Celery任务管理的技术方案,在不重启worker机的前提下,可以实现创建任务或更新任务,极大地提高了任务在运行中的稳定性,降低了运维成本。
背景技术
Celery是由Python开发、简单、灵活、可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务。Celery侧重于实时操作,但对调度支持也很好,其每天可以处理数以百万计的任务。Celery具有简单、高可用、快速和灵活的特点,因此得到了越来越广泛的应用。
现有技术中,按照Celery官方的方式每次更新任务或者新增任务都需要停止现有进行中的任务并重启worker机(任务执行单元)才能让任务生效,这种方式针对大量的任务新增或者更新是个灾难,为了新增任务或者修改任务逻辑会经常中断现有任务。
发明内容
针对现有技术中的问题,本发明的目的在于提供一种Celery任务管理方法、系统、设备及存储介质,在不重启worker机的前提下,可以实现创建任务或更新任务。
本发明实施例提供一种Celery任务管理方法,包括创建任务,所述创建任务包括如下步骤:
接收用户输入的任务创建信息,所述任务创建信息包括任务名称、任务对应的业务逻辑函数名称和任务参数;
创建新任务,调用预设的任务模板,将所述任务创建信息填入所述任务模板,生成新任务的任务脚本;
根据所述任务对应的业务逻辑函数名称,建立任务与包括对应的业务逻辑函数的代码文件的对应关系;
将所述新任务加入Celery的任务队列,所述新任务的任务脚本执行时自动调用所对应的代码中所对应的业务逻辑函数。
可选地,所述Celery任务管理方法还包括更新任务,所述更新任务包括如下步骤:
接收到新的代码文件;
将新的代码文件加载于调度内存中,并记录所述新的代码文件的更新时间戳。
可选地,所述更新任务还包括如下步骤:
每隔预设时间从调度内存中获取各个代码文件的更新时间戳;
判断当前获取的代码文件的更新时间戳与前一次获取的同一代码文件的更新时间戳是否一致;
如果不一致,则更新所述代码文件所对应的任务,以使得在执行所述代码文件所对应的任务时加载当前获取的代码文件。
可选地,所述更新任务中,所述每隔预设时间从调度内存中获取各个代码文件的更新时间戳之后,还包括如下步骤:
判断所述代码文件是否为新创建的代码文件;
如果所述代码文件不是新创建的代码文件,则判断当前获取的代码文件的更新时间戳与前一次获取的同一代码文件的更新时间戳是否一致。
可选地,如果当前获取的代码文件的更新时间戳与前一次获取的同一代码文件的更新时间戳不一致,所述更新任务还包括如下步骤:
判断所述代码文件所对应的任务是否被其他任务所调用;
如果是,则更新对应的其他任务,以使得其他任务执行并调用所述代码文件所对应的任务时,加载当前获取的代码文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海携程商务有限公司,未经上海携程商务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010099042.0/2.html,转载请声明来源钻瓜专利网。