CN107508787B - 一种任务执行方法、装置及系统 - Google Patents

一种任务执行方法、装置及系统 Download PDF

Info

Publication number
CN107508787B
CN107508787B CN201610424215.5A CN201610424215A CN107508787B CN 107508787 B CN107508787 B CN 107508787B CN 201610424215 A CN201610424215 A CN 201610424215A CN 107508787 B CN107508787 B CN 107508787B
Authority
CN
China
Prior art keywords
task
client
target
executing
execution
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.)
Active
Application number
CN201610424215.5A
Other languages
English (en)
Other versions
CN107508787A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610424215.5A priority Critical patent/CN107508787B/zh
Publication of CN107508787A publication Critical patent/CN107508787A/zh
Application granted granted Critical
Publication of CN107508787B publication Critical patent/CN107508787B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例提供一种任务执行方法、装置及系统,其中的方法可包括:接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息;根据所述路由信息,确定与所述第二客户端对应的目标执行队列;将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。采用本发明实施例任务路由灵活多变,任务分发灵活,执行方式多样,并且效率高。

Description

一种任务执行方法、装置及系统
技术领域
本发明涉及通信技术领域,具体涉及一种任务执行方法、装置及系统。
背景技术
随着互联网电子技术的发展,用户可以利用互联网进行娱乐、学习以及工作,在进行娱乐、学习以及工作过程中往往会涉及任务的远程执行,例如一个计算机向另一个计算机下发翻译任务进行执行。目前的远程执行方案支持Win上简单的Python脚本远程执行,一般直接使用底层的Socket进行通信。Socket:一种应用程序接口(ApplicationProgramming Interface,API),用于网际插座(Internet socket)与Unix域套接字,包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯,在计算机网络通讯方面被广泛使用。采用远程过程调用(Remote Procedure Call,RPC)的执行方式。RPC:是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。这种任务执行方式缺乏任务分发的灵活性,只支持单一的执行方式,并且效率也非常低。
发明内容
本发明实施例提供一种任务执行方法、装置及系统,任务路由灵活多变,任务分发灵活,执行方式多样,并且效率高。
本发明第一方面提供一种任务执行方法,包括:
接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息;
根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
本发明第二方面提供一种任务执行方法,包括:
接收消息服务器下发的用于执行目标任务的目标信息;
从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
向缓存服务器获取所述代码文件标识所标识的代码文件;
执行所述代码文件,以完成对所述目标任务的执行。
本发明第三方面提供一种任务执行装置,应用于消息服务器,包括:
接收模块,用于接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息;
确定模块,用于根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
任务下发模块,用于将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
本发明第四方面提供一种任务执行装置,应用于第二客户端,包括:
接收模块,用于接收消息服务器下发的用于执行目标任务的目标信息;
解析模块,用于从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
获取模块,用于向缓存服务器获取所述代码文件标识所标识的代码文件;
执行模块,用于执行所述代码文件,以完成对所述目标任务的执行。
本发明第五方面提供一种任务执行系统,包括第一客户端,缓存服务器,消息服务器以及第二客户端;
所述第一客户端将用于执行目标任务的代码文件上传至所述缓存服务器,并获取所述代码文件标识;
所述第一客户端向所述消息服务器发送任务执行指令,所述执行指令中包含用于执行目标任务的目标信息以及所述第二客户端的路由信息,所述目标信息包含所述代码文件标识;
所述消息服务器根据所述路由信息,确定与所述第二客户端对应的目标执行队列,并将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端;
所述第二客户端从所述目标信息中解析获得所述代码文件标识,并向所述缓存服务器获取所述代码文件标识所标识的代码文件;
所述第二客户端执行所述代码文件,以完成对所述目标任务的执行。
实施本发明实施例,具有如下有益效果:
本发明实施例,接收第一客户端发送的任务执行指令,该任务执行指令包括用于执行目标任务的目标信息以及执行目标任务的第二客户端的路由信息,根据路由信息,确定与第二客户端对应的目标执行队列;将目标信息放入目标执行队列中等待执行,以将目标任务下发至第二客户端执行,通过路由信息确定目标执行队列,任务路由灵活多变,任务分发灵活,并且由第二客户端执行,不限定执行方式,执行方式可以多样,并且效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务执行方法的流程图;
图2为本发明实施例提供的一种任务执行装置的结构示意图;
图3为本发明实施例提供的另一种任务执行装置的结构示意图;
图4为本发明实施例提供的一种任务执行系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的任务执行方法应用于使用Python和高级消息队列协议(AdvancedMessage Queuing Protocol,AMQP)相关组件实现基于网络的分布式跨平台Python程序执行系统。
请参照图1,为本发明实施例提供的一种任务执行方法的流程图;该方法可包括以下步骤S100-步骤S111。
S100,第一客户端上传代码及相关资源至缓存服务器;
本发明实施例中,第一客户端即是任务发布者Producer,第二客户端即是远程任务执行者Worker,其中Worker和Producer客户端都有相关逻辑和监听来进行相应运行时维护,可选的,Worker和Producer可以部署在任意有网络连接能访问AMQP服务器的环境中。
AMQP是一个网络协议,它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信。本发明实施例的消息服务器即是实现AMQP协议的Server,消息服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算中心。
本发明实施例的第一客户端可以运行于第一终端中,该第一终端可以包括智能手机、平板电脑、个人计算机(personal computer,PC)、电子书阅读器等等,该第一客户端可以是即时通信客户端、即时语音客户端等等;第二客户端可以运行于第二终端中,该第二终端可以包括智能手机、平板电脑、个人计算机(personal computer,PC)、电子书阅读器等等,该第二客户端可以是即时通信客户端、即时语音客户端等等。
第一客户端发布任务,将用于执行任务的代码及相关资源上传至缓存服务器,缓存服务器可以是文件缓存服务器(FileCache Server,FTP),使用FTP服务器作为代码分发缓存,可以有效减少无效网络负载,同时也支持其他的网络协议服务作为缓存。
S101,缓存服务器返回代码文件标识FileID;
本发明实施例中,缓存服务器接收到第一客户端上传的代码及相关资源后,将该代码以代码文件的形式进行存储,同时生成代码文件标识FileID,将该代码文件标识FileID返回至第一客户端。
S102,第一客户端上传生成的任务执行指令;
本发明实施例中,第一客户端接收代码文件标识FileID,同时第一客户端为待执行的目标任务生成第一标识TaskID,进一步的,第一客户端生成任务执行指令,可选的,该任务执行指令包括FileID、TaskID、代码文件的执行入口、执行该目标任务的第二客户端在消息服务器的路由信息以及任务参数中的至少一种。
第一客户端将生成的任务执行指令上传至AMQP消息服务器,由AMQP消息服务器将任务执行指令中的目标消息路由至相应的执行队列等待执行。
S103,消息服务器接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息;
本发明实施例中,消息服务器接收第一客户端发送的任务执行指令,总的来说,任务执行指令包括用于执行任务的目标信息以及执行该目标任务的第二客户端在消息服务器的路由信息,目标信息可以包括FileID、TaskID、代码文件的执行入口以及任务参数。
消息服务器所采用的网络协议为AMQP,AMQP支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信,消息代理(message brokers)从任务发布者亦称生产者那儿接收信息,并根据既定的路由规则把接收到的信息发送给处理信息的执行者worker。具体的,消息(message)被任务发布者发送给消息服务器中的虚拟交换机(exchange),交换机常常被比喻成邮局或者邮箱,然后交换机将收到的消息根据路由规则分发给绑定的队列(queue)。消息服务器中的交换机是用来发送信息的AMQP实体。交换机拿到一个信息之后根据路由信息将它路由给一个或零个队列。它使用哪种路由算法是由交换机类型和被称作绑定(bindings)的规则所决定的。
通常绑定(Binding)是交换机(exchange)将消息(message)路由给队列(queue)所需遵循的规则。如果要指示交换机“E”将信息路由给队列“Q”,那么“Q”就需要与“E”进行绑定。绑定操作需要定义一个可选的路由键(routing key)属性给某些类型的交换机。路由键的意义在于从发送给交换机的众多信息中选择出某些信息,将其路由给绑定的队列,可选的,本发明实施例中的路由信息可以是路由键,通过路由信息可以确定绑定的目标执行队列。打个比方:队列(queue)是我们想要去的位于纽约的目的地,交换机(exchange)是JFK机场,绑定(binding)就是JFK机场到目的地的路线。能够到达目的地的路线可以是一条或者多条。
S104,消息服务器根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
本发明实施例中,AMQP消息服务器通过任务执行指令中的路由信息可以确定执行目标任务的第二客户端对应的目标执行队列,即是虚拟交换机中能够到达第二客户端的目标执行队列。
S105,消息服务器将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
本发明实施例中,该目标执行队列中包括多个客户端发送的用于执行任务的多个信息,每个信息对应于一个执行任务,该多个信息中的每个任务执行者均为第二客户端,AMQP消息服务器按照客户端的任务发布时间进行排序执行,从而实现将目标任务下发至第二客户端执行。
S106,第二客户端接收消息服务器下发的用于执行目标任务的目标信息;
本发明实施例中,第二客户端接收AMQP消息服务器下发的用于执行目标任务的目标信息,可选的,该目标信息中包括代码文件标识FileID、待执行的目标任务标识TaskID、代码文件的执行入口以及任务参数。
S107,第二客户端从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
S108,第二客户端向缓存服务器获取所述代码文件标识所标识的代码文件;
本发明实施例中,第二客户端从目标信息中解析获得用于执行目标任务的代码文件标识FileID后,向缓存服务器获取该代码文件标识FileID所标识的代码文件,需要说明的是,在缓存服务器中代码文件标识FileID用于唯一标识代码文件。
S109,第二客户端执行所述代码文件,以完成对所述目标任务的执行。
本发明实施例中,第二客户端通过执行该代码文件,完成对目标任务的执行,具体可选的,第二客户端接收AMQP消息服务器下发的目标信息中除了代码文件标识FileID,还包括码文件的执行入口以及任务参数,第二客户端根据代码文件执行入口以及任务参数对所获得的代码文件进行执行。
可选的,执行代码流程部分,使用Python模块导入库importlib,子进程subprocess,多进程multiprocess作为底层,编写代码支持Python脚本的多种执行方式,主要的执行方式包括以下三种:可以继承上下文(importlib),隔离上下文(subprocess),混合(multiprocess)上下文,从而适合多种业务和安全场景。
可以继承上下文(importlib),即是守护端和执行端之间能进行变量传递以及修改,或者可以隔离上下文(subprocess),即是守护端和执行端之间不能进行变量传递以及更改,或者可以混合(multiprocess)上下文,即是守护端将监听的变量传递至执行端,但是执行端不能传递以及更改守护端变量。
S110,若成功执行所述目标任务,第二客户端向发布所述目标任务的第一客户端反馈执行结果信息,所述执行结果信息包含所述目标任务的第一标识;
本发明实施例中,第二客户端需要确定是否成功执行目标任务,若第二客户端成功执行该目标任务,第二客户端需要进一步确定是否需要向第一客户端反馈执行结果,若需要反馈执行结果,将执行成功的目标任务的第一标识TaskID以及执行结果放入至结果反馈队列,反馈至第一客户端。需要说明的是,若第二客户端不需要反馈执行结果信息,则此处任务执行流程结束。
可选的,第二客户端还需要向AMQP消息服务器反馈成功执行该目标任务的提示信息,以使该AMQP消息服务器可以根据该提示信息中目标任务的第一标识从AMQP消息服务器缓存中查找到该目标任务的目标信息,以将该目标信息从缓存中删除。
S111,若未成功执行所述目标任务,第二客户端向所述消息服务器反馈重新执行指令,所述重新执行指令包含所述目标任务的所述第一标识,以使所述消息服务器将所述目标任务的所述目标信息放入目标执行队列中等待执行。
本发明实施例中,若第二客户端未成功执行目标任务,则第二客户端向消息服务器反馈重新执行指令,该重新执行指令包含目标任务的第一标识,AMQP消息服务器根据该第一标识从AMQP消息服务器缓存中查找到目标信息,并将该目标信息放入目标执行队列中等待执行。
本发明实施例,接收第一客户端发送的任务执行指令,该任务执行指令包括用于执行目标任务的目标信息以及执行目标任务的第二客户端的路由信息,根据路由信息,确定与第二客户端对应的目标执行队列;将目标信息放入目标执行队列中等待执行,以将目标任务下发至第二客户端执行,通过路由信息确定目标执行队列,任务路由灵活多变,任务分发灵活,并且由第二客户端执行,不限定执行方式,执行方式可以多样,并且效率高。
下面将结合附图2-附图4,对本发明实施例提供的一种任务执行装置及系统进行详细介绍。
请参照图2,为本发明实施例提供的一种任务执行装置的结构示意图,本实施例的任务执行装置应用于消息服务器,如图所示,该任务执行装置包括接收模块100、确定模块101以及任务下发模块102;
接收模块100,用于接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息;
本发明实施例中,第一客户端即是任务发布者Producer,第二客户端即是远程任务执行者Worker,其中Worker和Producer客户端都有相关逻辑和监听来进行相应运行时维护,可选的,Worker和Producer可以部署在任意有网络连接能访问AMQP服务器的环境中。
AMQP是一个网络协议,它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信。本发明实施例的消息服务器即是实现AMQP协议的Server,消息服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算中心。
本发明实施例的第一客户端可以运行于第一终端中,该第一终端可以包括智能手机、平板电脑、个人计算机(personal computer,PC)、电子书阅读器等等,该第一客户端可以是即时通信客户端、即时语音客户端等等;第二客户端可以运行于第二终端中,该第二终端可以包括智能手机、平板电脑、个人计算机(personal computer,PC)、电子书阅读器等等,该第二客户端可以是即时通信客户端、即时语音客户端等等。
第一客户端发布任务,将用于执行任务的代码及相关资源上传至缓存服务器,缓存服务器可以是文件缓存服务器(FileCache Server,FTP),使用FTP服务器作为代码分发缓存,可以有效减少无效网络负载,同时也支持其他的网络协议服务作为缓存。
本发明实施例中,缓存服务器接收到第一客户端上传的代码及相关资源后,将该代码以代码文件的形式进行存储,同时生成代码文件标识FileID,将该代码文件标识FileID返回至第一客户端。
本发明实施例中,第一客户端接收代码文件标识FileID,同时第一客户端为待执行的目标任务生成第一标识TaskID,进一步的,第一客户端生成任务执行指令,可选的,该任务执行指令包括FileID、TaskID、代码文件的执行入口、执行该目标任务的第二客户端在消息服务器的路由信息以及任务参数中的至少一种。
第一客户端将生成的任务执行指令上传至AMQP消息服务器,由AMQP消息服务器将任务执行指令中的目标消息路由至相应的执行队列等待执行。
本发明实施例中,消息服务器接收第一客户端发送的任务执行指令,总的来说,任务执行指令包括用于执行任务的目标信息以及执行该目标任务的第二客户端在消息服务器的路由信息,目标信息可以包括FileID、TaskID、代码文件的执行入口以及任务参数。
消息服务器所采用的网络协议为AMQP,AMQP支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信,消息代理(message brokers)从任务发布者亦称生产者那儿接收信息,并根据既定的路由规则把接收到的信息发送给处理信息的执行者worker。具体的,消息(message)被任务发布者发送给消息服务器中的虚拟交换机(exchange),交换机常常被比喻成邮局或者邮箱,然后交换机将收到的消息根据路由规则分发给绑定的队列(queue)。消息服务器中的交换机是用来发送信息的AMQP实体。交换机拿到一个信息之后根据路由信息将它路由给一个或零个队列。它使用哪种路由算法是由交换机类型和被称作绑定(bindings)的规则所决定的。
通常绑定(Binding)是交换机(exchange)将消息(message)路由给队列(queue)所需遵循的规则。如果要指示交换机“E”将信息路由给队列“Q”,那么“Q”就需要与“E”进行绑定。绑定操作需要定义一个可选的路由键(routing key)属性给某些类型的交换机。路由键的意义在于从发送给交换机的众多信息中选择出某些信息,将其路由给绑定的队列,可选的,本发明实施例中的路由信息可以是路由键,通过路由信息可以确定绑定的目标执行队列。打个比方:队列(queue)是我们想要去的位于纽约的目的地,交换机(exchange)是JFK机场,绑定(binding)就是JFK机场到目的地的路线。能够到达目的地的路线可以是一条或者多条。
确定模块101,用于根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
本发明实施例中,AMQP消息服务器通过任务执行指令中的路由信息可以确定执行目标任务的第二客户端对应的目标执行队列,即是虚拟交换机中能够到达第二客户端的目标执行队列。
任务下发模块102,用于将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
本发明实施例中,该目标执行队列中包括多个客户端发送的用于执行任务的多个信息,每个信息对应于一个执行任务,该多个信息中的每个任务执行者均为第二客户端,AMQP消息服务器按照客户端的任务发布时间进行排序执行,从而实现将目标任务下发至第二客户端执行。
进一步可选的,所述目标执行队列中包括多个客户端发送的用于执行任务的多个信息,所述多个信息按照客户端的任务发布时间进行排序执行;所述装置还包括获取模块103;
获取模块103,用于若接收到所述第二客户端发送的重新执行指令时,所述重新执行指令包含预重新执行任务的第二标识,根据所述第二标识,从缓存中获取所述预重新执行任务的信息;
所述任务下发模块102还用于将所述预重新执行任务的信息放入所述目标执行队列中等待执行。
本发明实施例,接收第一客户端发送的任务执行指令,该任务执行指令包括用于执行目标任务的目标信息以及执行目标任务的第二客户端的路由信息,根据路由信息,确定与第二客户端对应的目标执行队列;将目标信息放入目标执行队列中等待执行,以将目标任务下发至第二客户端执行,通过路由信息确定目标执行队列,任务路由灵活多变,任务分发灵活,并且由第二客户端执行,不限定执行方式,执行方式可以多样,并且效率高。
请参照图3,为本发明实施例提供的另一种任务执行装置的结构示意图,本实施例的任务执行装置应用于第二客户端,如图所示,该任务执行装置包括:接收模块200、解析模块201、获取模块202以及执行模块203;
接收模块200,用于接收消息服务器下发的用于执行目标任务的目标信息;
本发明实施例中,第二客户端接收AMQP消息服务器下发的用于执行目标任务的目标信息,可选的,该目标信息中包括代码文件标识FileID、待执行的目标任务标识TaskID、代码文件的执行入口以及任务参数。
解析模块201,用于从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
获取模块202,用于向缓存服务器获取所述代码文件标识所标识的代码文件;
本发明实施例中,第二客户端从目标信息中解析获得用于执行目标任务的代码文件标识FileID后,向缓存服务器获取该代码文件标识FileID所标识的代码文件,需要说明的是,在缓存服务器中代码文件标识FileID用于唯一标识代码文件。
执行模块203,用于执行所述代码文件,以完成对所述目标任务的执行。
具体可选的,所述执行模块具体用于利用Python编程语言模块的导入库importlib,子进程subprocess,多进程multiprocess作为底层,支持Python脚本的多种执行方式;
所述多种执行方式包含守护端和执行端之间进行变量传递以及更改,或者所述守护端与所述执行端之间不能进行变量传递以及更改,或者守护端将监听的变量传递至所述执行端,但是所述执行端不能传递以及更改守护端变量。
本发明实施例中,第二客户端通过执行该代码文件,完成对目标任务的执行,具体可选的,第二客户端接收AMQP消息服务器下发的目标信息中除了代码文件标识FileID,还包括码文件的执行入口以及任务参数,第二客户端根据代码文件执行入口以及任务参数对所获得的代码文件进行执行。
可选的,执行代码流程部分,使用Python模块导入库importlib,子进程subprocess,多进程multiprocess作为底层,编写代码支持Python脚本的多种执行方式,主要的执行方式包括以下三种:可以继承上下文(importlib),隔离上下文(subprocess),混合(multiprocess)上下文,从而适合多种业务和安全场景。
可以继承上下文(importlib),即是守护端和执行端之间能进行变量传递以及修改,或者可以隔离上下文(subprocess),即是守护端和执行端之间不能进行变量传递以及更改,或者可以混合(multiprocess)上下文,即是守护端将监听的变量传递至执行端,但是执行端不能传递以及更改守护端变量。
进一步可选的,本发明实施例的任务执行装置还包括反馈模块204;
所述反馈模块204具体用于若成功执行所述目标任务,向发布所述目标任务的第一客户端反馈执行结果信息,所述执行结果信息包含所述目标任务的第一标识;
若未成功执行所述目标任务,向所述消息服务器反馈重新执行指令,所述重新执行指令包含所述目标任务的所述第一标识,以使所述消息服务器将所述目标任务的所述目标信息放入目标执行队列中等待执行。
本发明实施例中,第二客户端需要确定是否成功执行目标任务,若第二客户端成功执行该目标任务,第二客户端需要进一步确定是否需要向第一客户端反馈执行结果,若需要反馈执行结果,将执行成功的目标任务的第一标识TaskID以及执行结果放入至结果反馈队列,反馈至第一客户端。需要说明的是,若第二客户端不需要反馈执行结果信息,则此处任务执行流程结束。
可选的,第二客户端还需要向AMQP消息服务器反馈成功执行该目标任务的提示信息,以使该AMQP消息服务器可以根据该提示信息中目标任务的第一标识从AMQP消息服务器缓存中查找到该目标任务的目标信息,以将该目标信息从缓存中删除。
本发明实施例中,若第二客户端未成功执行目标任务,则第二客户端向消息服务器反馈重新执行指令,该重新执行指令包含目标任务的第一标识,AMQP消息服务器根据该第一标识从AMQP消息服务器缓存中查找到目标信息,并将该目标信息放入目标执行队列中等待执行。
本发明实施例,接收第一客户端发送的任务执行指令,该任务执行指令包括用于执行目标任务的目标信息以及执行目标任务的第二客户端的路由信息,根据路由信息,确定与第二客户端对应的目标执行队列;将目标信息放入目标执行队列中等待执行,以将目标任务下发至第二客户端执行,通过路由信息确定目标执行队列,任务路由灵活多变,任务分发灵活,并且由第二客户端执行,不限定执行方式,执行方式可以多样,并且效率高。
请参照图4,为本发明实施例提供的一种任务执行系统的架构图,如图所示,本实施例的任务执行系统架构包括第一客户端,缓存服务器,消息服务器以及第二客户端;
所述第一客户端将用于执行目标任务的代码文件上传至所述缓存服务器,并获取所述代码文件标识;
所述第一客户端向所述消息服务器发送任务执行指令,所述执行指令中包含用于执行目标任务的目标信息以及所述第二客户端的路由信息,所述目标信息包含所述代码文件标识;
所述消息服务器根据所述路由信息,确定与所述第二客户端对应的目标执行队列,并将所述目标信息放入所述目标执行队列中,以将所述目标任务下发至所述第二客户端;
所述第二客户端从所述目标信息中解析获得所述代码文件标识,并向所述缓存服务器获取所述代码文件标识所标识的代码文件;
所述第二客户端执行所述代码文件,以完成对所述目标任务的执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,附图2所示任务执行装置对应的程序可存储在消息服务器的可读存储介质内,并被该消息服务器中的至少一个处理器执行,以实现上述任务执行方法,该方法包括图1中方法实施例所述的流程,附图3所示任务执行装置对应的程序可存储在终端的可读存储介质内,并被该终端中的至少一个处理器执行,以实现上述任务执行方法,该方法包括图1中方法实施例所述的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (13)

1.一种任务执行方法,其特征在于,包括:
消息服务器接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息,所述路由信息为路由键,所述消息服务器通过路由信息可以确定所述路由信息绑定的目标执行队列;
所述消息服务器根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
所述消息服务器根据所述路由信息将所述目标信息路由至所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
2.如权利要求1所述的方法,其特征在于,所述目标信息包括用于执行所述目标任务的代码文件标识、所述代码文件的执行入口信息、执行所述目标任务的任务参数以及所述目标任务的第一标识。
3.如权利要求1或2所述的方法,其特征在于,所述目标执行队列中包括多个客户端发送的用于执行任务的多个信息,所述多个信息按照客户端的任务发布时间进行排序执行;所述方法还包括:
若接收到所述第二客户端发送的重新执行指令时,所述重新执行指令包含预重新执行任务的第二标识,所述消息服务器根据所述第二标识,从缓存中获取所述预重新执行任务的信息;
所述消息服务器将所述预重新执行任务的信息放入所述目标执行队列中等待执行。
4.一种任务执行方法,其特征在于,包括:
第二客户端接收消息服务器通过所述第二客户端对应的目标执行队列下发的用于执行目标任务的目标信息,所述目标信息是所述消息服务器根据所述目标任务对应的路由信息路由至所述目标执行队列的,所述路由信息为路由键,所述消息服务器通过路由信息可以确定所述路由信息绑定的目标执行队列;
第二客户端从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
第二客户端向缓存服务器获取所述代码文件标识所标识的代码文件;
第二客户端执行所述代码文件,以完成对所述目标任务的执行。
5.如权利要求4所述的方法,其特征在于,所述第二客户端执行所述代码文件,包括:
第二客户端利用Python编程语言模块的导入库importlib,子进程subprocess,多进程multiprocess作为底层,支持Python脚本的多种执行方式;
所述多种执行方式包含守护端和执行端之间进行变量传递以及更改,或者所述守护端与所述执行端之间不能进行变量传递以及更改,或者守护端将监听的变量传递至所述执行端,但是所述执行端不能传递以及更改守护端变量。
6.如权利要求4或5所述的方法,其特征在于,所述方法还包括:
若成功执行所述目标任务,第二客户端向发布所述目标任务的第一客户端反馈执行结果信息,所述执行结果信息包含所述目标任务的第一标识;
若未成功执行所述目标任务,第二客户端向所述消息服务器反馈重新执行指令,所述重新执行指令包含所述目标任务的所述第一标识,以使所述消息服务器将所述目标任务的所述目标信息放入目标执行队列中等待执行。
7.一种任务执行装置,应用于消息服务器,其特征在于,包括:
接收模块,用于接收第一客户端发送的任务执行指令,所述任务执行指令包括用于执行目标任务的目标信息以及执行所述目标任务的第二客户端的路由信息,所述路由信息为路由键,所述消息服务器通过路由信息可以确定所述路由信息绑定的目标执行队列;
确定模块,用于根据所述路由信息,确定与所述第二客户端对应的目标执行队列;
任务下发模块,用于根据所述路由信息将所述目标信息路由至所述目标执行队列中,以将所述目标任务下发至所述第二客户端执行。
8.如权利要求7所述的装置,其特征在于,所述目标信息包括用于执行所述目标任务的代码文件标识、所述代码文件的执行入口信息、执行所述目标任务的任务参数以及所述目标任务的第一标识。
9.如权利要求7或8所述的装置,其特征在于,所述目标执行队列中包括多个客户端发送的用于执行任务的多个信息,所述多个信息按照客户端的任务发布时间进行排序执行;所述装置还包括:
获取模块,用于若接收到所述第二客户端发送的重新执行指令时,所述重新执行指令包含预重新执行任务的第二标识,根据所述第二标识,从缓存中获取所述预重新执行任务的信息;
所述任务下发模块还用于将所述预重新执行任务的信息放入所述目标执行队列中等待执行。
10.一种任务执行装置,应用于第二客户端,其特征在于,包括:
接收模块,用于接收消息服务器通过所述第二客户端对应的目标执行队列下发的用于执行目标任务的目标信息,所述目标信息是所述消息服务器根据所述目标任务对应的路由信息路由至所述目标执行队列的,所述路由信息为路由键,所述消息服务器通过路由信息可以确定所述路由信息绑定的目标执行队列;
解析模块,用于从所述目标信息中解析获得用于执行所述目标任务的代码文件标识;
获取模块,用于向缓存服务器获取所述代码文件标识所标识的代码文件;
执行模块,用于执行所述代码文件,以完成对所述目标任务的执行。
11.如权利要求10所述的装置,其特征在于,所述执行模块具体用于利用Python编程语言模块的导入库importlib,子进程subprocess,多进程multiprocess作为底层,支持Python脚本的多种执行方式;
所述多种执行方式包含守护端和执行端之间进行变量传递以及更改,或者所述守护端与所述执行端之间不能进行变量传递以及更改,或者守护端将监听的变量传递至所述执行端,但是所述执行端不能传递以及更改守护端变量。
12.如权利要求10或11所述的装置,其特征在于,所述装置还包括反馈模块;
所述反馈模块具体用于若成功执行所述目标任务,向发布所述目标任务的第一客户端反馈执行结果信息,所述执行结果信息包含所述目标任务的第一标识;
若未成功执行所述目标任务,向所述消息服务器反馈重新执行指令,所述重新执行指令包含所述目标任务的所述第一标识,以使所述消息服务器将所述目标任务的所述目标信息放入目标执行队列中等待执行。
13.一种任务执行系统,其特征在于,包括第一客户端,缓存服务器,消息服务器以及第二客户端;
所述第一客户端将用于执行目标任务的代码文件上传至所述缓存服务器,并获取所述代码文件标识;
所述第一客户端向所述消息服务器发送任务执行指令,所述执行指令中包含用于执行目标任务的目标信息以及所述第二客户端的路由信息,所述目标信息包含所述代码文件标识,所述路由信息为路由键,所述消息服务器通过路由信息可以确定所述路由信息绑定的目标执行队列;
所述消息服务器根据所述路由信息,确定与所述第二客户端对应的目标执行队列,并根据所述路由信息将所述目标信息路由至所述目标执行队列中,以将所述目标任务下发至所述第二客户端;
所述第二客户端从所述目标信息中解析获得所述代码文件标识,并向所述缓存服务器获取所述代码文件标识所标识的代码文件;
所述第二客户端执行所述代码文件,以完成对所述目标任务的执行。
CN201610424215.5A 2016-06-14 2016-06-14 一种任务执行方法、装置及系统 Active CN107508787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610424215.5A CN107508787B (zh) 2016-06-14 2016-06-14 一种任务执行方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610424215.5A CN107508787B (zh) 2016-06-14 2016-06-14 一种任务执行方法、装置及系统

Publications (2)

Publication Number Publication Date
CN107508787A CN107508787A (zh) 2017-12-22
CN107508787B true CN107508787B (zh) 2019-03-01

Family

ID=60678354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610424215.5A Active CN107508787B (zh) 2016-06-14 2016-06-14 一种任务执行方法、装置及系统

Country Status (1)

Country Link
CN (1) CN107508787B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110224933A (zh) * 2019-06-18 2019-09-10 成都品果科技有限公司 一种消息分发系统
CN111580993B (zh) * 2020-05-11 2024-05-17 广州虎牙信息科技有限公司 数据处理方法和装置、电子设备及存储介质
CN113688175B (zh) * 2020-05-18 2024-10-18 北京沃东天骏信息技术有限公司 一种数据处理方法和装置
CN112346609B (zh) * 2020-09-25 2022-07-12 北京淇瑀信息科技有限公司 一种基于多业务任务显示的页面展示方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202766A (zh) * 2006-12-11 2008-06-18 三星电子株式会社 用于便携式终端的远程控制系统和方法
CN103679392A (zh) * 2013-12-26 2014-03-26 拉卡拉支付有限公司 一种任务调度处理方法及系统
CN104461562A (zh) * 2014-12-22 2015-03-25 山东中创软件商用中间件股份有限公司 一种任务创建的方法及系统
CN104850791A (zh) * 2012-10-26 2015-08-19 北京奇虎科技有限公司 处理任务的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323556B2 (en) * 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202766A (zh) * 2006-12-11 2008-06-18 三星电子株式会社 用于便携式终端的远程控制系统和方法
CN104850791A (zh) * 2012-10-26 2015-08-19 北京奇虎科技有限公司 处理任务的方法和系统
CN103679392A (zh) * 2013-12-26 2014-03-26 拉卡拉支付有限公司 一种任务调度处理方法及系统
CN104461562A (zh) * 2014-12-22 2015-03-25 山东中创软件商用中间件股份有限公司 一种任务创建的方法及系统

Also Published As

Publication number Publication date
CN107508787A (zh) 2017-12-22

Similar Documents

Publication Publication Date Title
US11188380B2 (en) Method and apparatus for processing task in smart device
CN107508787B (zh) 一种任务执行方法、装置及系统
CN110310034A (zh) 一种应用于SaaS的服务编排、业务流程处理方法和装置
JP5988621B2 (ja) 高負荷のビジネスプロセスのスケーラビリティ
CN109376017B (zh) 基于容器的云计算平台任务处理方法、系统及其应用方法
CN107040416B (zh) 一种基于Cairngorm框架的虚拟数据中心可视化管理方法
US11194572B2 (en) Managing external feeds in an event-based computing system
CN104932941B (zh) 一种分布式消息处理系统及其中的设备和方法
US9497095B2 (en) Dynamic control over tracing of messages received by a message broker
US9811390B1 (en) Consolidating tasks into a composite request
CN112632566A (zh) 漏洞扫描方法和装置、存储介质及电子设备
CN113064583B (zh) 多级页面路由跳转方法、装置、计算机设备及存储介质
CN108510081A (zh) 机器学习方法和平台
CN109800083A (zh) 一种微服务协同调用的方法、装置、系统及存储介质
CN109831466A (zh) 微服务业务处理方法及nginx服务器
US20130054735A1 (en) Wake-up server
CN104219280B (zh) 一种智能应用数据传输通道
CN110413822A (zh) 离线图像结构化分析方法、装置、系统和存储介质
Alboaie et al. Swarm communication-a messaging pattern proposal for dynamic scalability in cloud
US20150066571A1 (en) High-load business process scalability
US9614900B1 (en) Multi-process architecture for a split browser
CN108958933B (zh) 任务执行器的配置参数更新方法、装置及设备
US20090307712A1 (en) Actor virtual machine
CN110175030A (zh) 一种api服务网关处理方法
Ai et al. AGV scheduling system based on MQTT protocol

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