CN114138507A - Python程序服务化方法、装置及计算机可读存储介质 - Google Patents
Python程序服务化方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114138507A CN114138507A CN202111320340.9A CN202111320340A CN114138507A CN 114138507 A CN114138507 A CN 114138507A CN 202111320340 A CN202111320340 A CN 202111320340A CN 114138507 A CN114138507 A CN 114138507A
- Authority
- CN
- China
- Prior art keywords
- program
- variable
- application program
- http
- python
- 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
- 238000000034 method Methods 0.000 title claims abstract description 94
- 230000004044 response Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000012546 transfer Methods 0.000 claims abstract description 5
- 230000009471 action Effects 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 28
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 12
- 230000006978 adaptation Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000008676 import Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供Python程序服务化方法,涉及计算机领域,能够降低开发人员编程的复杂度。该方法包括:通过应用程序编程接口API接收来自客户端设备的超文本传输协议HTTP请求。以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量。构建用于存储应用程序的运行结果的第二变量。以第一变量和第二变量为参数,创建第一线程。启动第一线程,以获得应用程序的运行结果。通过API向客户端设备发送HTTP响应,HTTP响应包括应用程序的运行结果。
Description
技术领域
本申请涉及计算机领域,尤其涉及Python程序服务化方法、装置及计算机可读存储介质。
背景技术
Python语言作为目前最流行的程序设计语言之一,被普遍应用于科学计算、人工智能等领域。通常,采用Python语言编写的程序只能在本地调用,例如,乙如果想调用甲编写的程序,必须先将该程序拷贝至乙的电脑上,然后再编译运行。这会限制程序的应用范围,并且给开发人员带来不便。在互联网时代,可以通过将程序服务化来共享程序。具体地,将程序封装成能够提供应用程序编程接口(application programming interface,API)的web服务,然后将封装后的web服务部署在互联网服务器(以下简称为服务器)上,以供所有客户端调用。这样,只需要在服务器上部署并运行一次程序,所有客户端就都可以通过调用API的形式来访问程序。
在现有的Python程序服务化框架——Tornado框架中,需要为不同的操作动作指定不同的API,并且为不同的API定义不同的处理程序。这会增加开发人员编程的复杂度,进而增加开发难度和时间成本,使得Tornado框架难以普及。
发明内容
本申请实施例提供Python程序服务化方法、装置及计算机可读存储介质,用于解决现有Tornado框架存在开发人员编程复杂度较高的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供了一种Python程序服务化方法,该方法可以由Python程序服务化装置执行,该方法包括:通过应用程序编程接口API接收来自客户端设备的超文本传输协议HTTP请求。以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量。构建用于存储应用程序的运行结果的第二变量。以第一变量和第二变量为参数,创建第一线程。启动第一线程,以获得应用程序的运行结果。通过API向客户端设备发送HTTP响应,HTTP响应包括应用程序的运行结果。
在本申请实施例提供的Python程序服务化方法中,针对不同的操作动作,都使用同一API,并且采用为该API定义的同一处理程序进行处理,这会大大简化编程,进而降低开发难度和时间成本。
结合第一方面,在第一方面的某些实施方式中,HTTP请求中的请求体包括操作动作的名称和与操作动作对应的参数列表。在该方案中,不同的HTTP请求采用同一格式,使得生成不同HTTP请求时,只需要根据不同的操作修改相应的操作动作名称和参数列表即可,而不需要为不同的操作采用不同的请求格式,大大降低了编程的复杂度。
结合第一方面,在第一方面的某些实施方式中,启动第一线程,以获得应用程序的运行结果,包括:为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用应用程序实例对象中与第一变量中的操作动作同名的方法对象;以第一变量中与操作动作对应的参数列表为输入参数,执行方法对象,以获得应用程序的运行结果。在该方案中,通过对后端应用程序的线程调用,Python程序服务化装置能够根据HTTP请求中的操作动作的名称,执行开发人员在后端应用程序中动态编写的与该操作动作名称对应的方法。
第二方面,提供了一种Python程序服务化装置用于实现上述Python程序服务化方法。该Python程序服务化装置包括实现上述方法相应的模块、单元、或手段(means),该模块、单元、或means可以通过硬件实现,软件实现,或者通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或单元。
结合第二方面,在第二方面的某些实施方式中,Python程序服务化装置包括:处理模块和程序编程接口API;API,用于接收来自客户端设备的HTTP请求;处理模块,用于以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量;处理模块,还用于构建用于存储应用程序的运行结果的第二变量;处理模块,还用于以第一变量和第二变量为参数,创建第一线程;处理模块,还用于启动第一线程,以获得应用程序的运行结果;API,还用于向客户端设备发送HTTP响应,HTTP响应包括应用程序的运行结果。
结合第二方面,在第二方面的某些实施方式中,HTTP请求中的请求体包括操作动作的名称和与操作动作对应的参数列表。
结合第二方面,在第二方面的某些实施方式中,处理模块,还用于启动第一线程,以获得应用程序的运行结果,包括:用于为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用应用程序实例对象中与第一变量中的操作动作同名的方法对象;以第一变量中与操作动作对应的参数列表为输入参数,执行方法对象,以获得应用程序的运行结果。
第三方面,提供了一种Python程序服务化装置,包括:至少一个处理器;处理器用于执行计算机程序或指令,以使该Python程序服务化装置执行上述第一方面的方法。
结合第三方面,在第三方面的某些实施方式中,该Python程序服务化装置还包括存储器,该存储器,用于保存必要的程序指令和数据。该存储器可以与处理器耦合,或者,也可以独立于该处理器。
在一些可能的设计中,该Python程序服务化装置可以是芯片或芯片***。该Python程序服务化装置是芯片***时,可以由芯片构成,也可以包含芯片和其他分立器件。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当其被计算机执行时,使得计算机可以执行上述第一方面的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面的方法。
其中,第二方面至第五方面中任一种设计方式所带来的技术效果可参见上述第一方面中不同设计方式所带来的技术效果,在此不再赘述。
附图说明
图1为本申请实施例提供的一种通信***的结构示意图;
图2为本申请实施例提供的一种Python程序服务化方法的流程图;
图3为本申请实施例提供的另一种通信***的结构示意图;
图4为本申请实施例提供的一种Python程序服务化方法的具体示例的流程图;
图5为本申请提供的一种Python程序服务化装置的结构示意图;
图6为本申请提供的另一种Python程序服务化装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
图1为本申请提供的一种通信***10。该通信***10包括可以相互通信的Python程序服务化装置101和客户端设备102。其中,客户端设备102,用于通过API向Python程序服务化装置101发送超文本传输协议(hyper text transfer protocol,HTTP)请求。Python程序服务化装置101,用于通过API接收来自客户端设备102的HTTP请求。Python程序服务化装置101,还用于以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量。Python程序服务化装置101,还用于构建用于存储应用程序的运行结果的第二变量。Python程序服务化装置101,还用于以第一变量和第二变量为参数,创建第一线程。Python程序服务化装置101,还用于启动第一线程,以获得应用程序的运行结果。Python程序服务化装置101,还用于通过API向客户端设备102发送HTTP响应,HTTP响应包括应用程序的运行结果。客户端设备102,还用于通过API接收来自Python程序服务化装置101的HTTP响应。该方案的具体实现及技术效果将在后续方法实施例中详细描述,在此不予赘述。
可选的,本申请实施例中的Python程序服务化装置或者客户端设备的相关功能可以由一个设备实现,也可以由多个设备共同实现,还可以是由一个设备内的一个或多个功能模块实现,本申请实施例对此不作具体限定。可以理解的是,上述功能既可以是硬件设备中的网络元件,也可以是在专用硬件上运行的软件功能,或者是硬件与软件的结合,或者是平台(例如,云平台)上实例化的虚拟化功能。
下面将结合图1对本申请实施例提供的Python程序服务化方法进行具体阐述。
如图2所示,为本申请实施例提供的一种Python程序服务化方法,该方法包括如下步骤:
S201、客户端设备通过API向Python程序服务化装置发送HTTP请求。相应地,Python程序服务化装置通过API接收来自客户端设备的HTTP请求。
示例性的,在本申请实施例中,客户端设备可以为终端设备,Python程序服务化装置可以为服务器或者服务器中的模块,本申请实施例对此不做具体限定。
结合图1,如图3所示,Python程序服务化装置还可以包括iBoot模块和后端应用程序。其中,iBoot模块用于将后端应用程序服务化,后端应用程序由开发人员定制开发,例如,不同应用的后端应用程序不同,或者,同一应用的不同版本的后端应用程序也不同。在本申请实施例中,iBoot模块可以属于***软件,例如,可以将iBoot模块做成一个Python依赖包,并放置于Python全球仓库中,开发人员编写后端应用程序时,只需要从Python全球仓库从中引用该iBoot依赖包即可,而不需要对其进行修改,也不需要了解其具体的实现细节。而后端应用程序可以属于应用软件,可以由开发人员根据不同的应用需求而动态开发,即,开发人员可以随时修改后端应用程序。示例性地,通过引用并调用iBoot依赖包的程序如下:
pip install iBoot#从Python全球仓库下载安装iBoot依赖包
from iboot import iboot#从iboot依赖包中引入iboot模块
iboot.start()#调用iboot模块的start()函数,启动HTTP web服务
进一步地,如图3所示,iBoot模块可以包括异步输入/输出(input/output,I/O)封装调用模块、API适配模块和HTTP服务监听模块。各个模块的作用以及程序的示例将结合后续方法步骤详细描述,在此不予赘述。
示例性地,结合图3,上述步骤S201可以通过如下方式来实现:客户端设备通过API向HTTP服务监听模块发送HTTP请求,HTTP服务监听模块通过API接收来自客户端设备的HTTP请求。
可选地,HTTP请求中的请求体包括操作动作的名称和与操作动作对应的参数列表。在该方案中,不同的HTTP请求采用同一格式,使得生成不同HTTP请求时,只需要根据不同的操作修改相应的操作动作名称和参数列表即可,而不需要为不同的操作采用不同的请求格式,大大降低了编程的复杂度。
在本申请实施例中,客户端设备中的程序,即客户端程序也可以由开发人员根据不同的应用需求而动态开发。假设要实现一个用户管理应用***,即通过网络来创建用户、查询用户、修改用户和删除用户。为了便于理解,假设每个用户信息仅包括姓名(name)和年龄(age)两个字段。示例性地,结合图3,客户端程序示例如下:
从以上程序可以看出,不论对用户的增删改查操作,都使用API,即url。并且调用同一HTTP访问函数,即“requests.post”。此外,HTTP请求中包含API的信息,即url的地址“http://xxx.com/api/model”。HTTP请求中的请求体(body)还包括操作动作(action)的名称和与操作动作对应的参数列表(args)。
S202、Python程序服务化装置以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量。
在本申请实施例中,处理程序的异步调用不会影响Python程序服务化装置对其他HTTP请求的响应。
示例性地,处理程序可以为ModelApi类中的post方法。
示例性地,第一变量的名称可以为输入(input)。
S203、Python程序服务化装置构建用于存储应用程序的运行结果的第二变量。
在本申请实施例中,应用程序的运行结果可以为第一线程中应用程序的运行结果。
示例性地,第二变量的名称可以为输出(output)。
S204、Python程序服务化装置以第一变量和第二变量为参数,创建第一线程。
在本申请实施例中,Python程序服务化装置为每一个HTTP请求都创建一个新的线程来执行处理程序。
示例性地,结合图3,上述步骤S202至步骤S204可以由API适配模块执行。
S205、Python程序服务化装置启动第一线程,以获得应用程序的运行结果。
在本申请实施例中启动一个线程之后,Python程序服务化装置以异步的方式等待该线程的完成,也就是说,各个HTTP请求是异步并发执行的,不需要等待和阻塞,从而极大提高了Python程序服务化装置的并发处理性能。
可选地,步骤S205包括:Python程序服务化装置为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用应用程序实例对象中与第一变量中的操作动作同名的方法对象;Python程序服务化装置以第一变量中与操作动作对应的参数列表为输入参数,执行方法对象,以获得应用程序的运行结果。在该方案中,通过对后端应用程序的线程调用,Python程序服务化装置能够根据HTTP请求中操作动作的名称,执行开发人员在后端应用程序中动态编写的与该操作动作名称对应的方法。
在本申请实施例中,目标类为开发人员在后端应用程序中编写的。由于Python程序服务化装置中iBoot模块的程序是写死的,因此,为了确保iBoot模块能够正确引入和/或调用目标类,目标类的名称和位置也必须固定。示例性地,目标类的名称可以为ModelCore,目标类所在主程序的名称为model_core.py,该主程序位于当前工作目录的子目录core之下,即目标类位于./core/model_core.py中。仍然以上述用户管理应用***为例,结合图3,后端应用程序中有关目标类的示例程序如下:
从以上程序可以看出,在ModelCore中,为每一个操作动作定义了一个Python方法,以实现该操作动作。在本例中定义了4个方法,分别用于实现创建用户(create_user)、查询用户(get_users)、修改用户年龄(update_user_age)和删除用户(delete_user)的操作动作。
通常,Python的反射机制是指利用字符串去已存在的模块中找到指定的属性或方法,找到方法后自动执行。本申请中反射机制具体是指利用HTTP请求中操作动作的名称,去后端应用程序中预先配置的目标类中找到同名的方法,并执行该方法。因此,利用反射机制,可以将写死的iBoot依赖包程序与开发人员动态开发的后端应用程序中的方法成功地关联起来。
示例性地,结合图3,上述步骤S205可以由iBoot模块中的异步I/O封装调用模块执行。
下面示例性地出iBoot模块中的程序:
从以上程序可以看出,iBoot模块中的程序启动之后,在指定的端口,例如3333上监听来自客户端的HTTP请求。接收到HTTP请求之后,iBoot模块调用处理程序,即ModelApi类,具体地,ModelApi类中的post方法来处理该HTTP请求。
S206、Python程序服务化装置通过API向客户端设备发送HTTP响应,HTTP响应包括应用程序的运行结果。相应地,客户端设备通过API接收来自Python程序服务化装置的HTTP响应。
示例性地,结合图3,步骤S206可以通过如下方式来实现:HTTP服务监听模块通过API向客户端设备发送HTTP响应,客户端设备通过API接收来自HTTP服务监听模块的HTTP响应。
在本申请实施例提供的Python程序服务化方法中,针对不同的操作动作,都使用同一API,并且采用为该API定义的同一处理程序进行处理,这会大大简化编程,进而降低开发难度和时间成本。
为了清楚地说明本申请实施例的技术效果,下面给出使用现有的Tornado框架开发用户管理应用***时,开发人员编写的后端应用程序示例:
从以上程序可以看出,一方面,使用Tornado框架编写后端应用程序时,必须为不同的操作动作指定不同的API,并且为不同的API定义不同的处理程序。例如,为创建用户和查询用户指定了“/api/users”端口,并指定使用UserApiA类作为处理程序;为修改用户年龄指定了“/api/users/age”端口,为删除用户指定了“/api/users/{id}”端口,并指定使用UserApiB类作为修改用户年龄和删除用户对应的处理程序。而在本申请实施例提供的Python程序服务化方法中,无论对用户的增删改查操作,都使用同一API,即“api/model”端口,并且指定ModelApi类为处理程序,从而能够简化编程。另一方面,如果使用Tornado框架,在服务器端,开发人员需要编写以上程序,其中,不仅需要分别定义UserApiA类中的get、post方法以及UserApiB类中的put、delete方法,还需要在每个方法中使用async和await等异步操作语法,以达到异步I/O的效果。这些异步操作语法的使用非常讲究,一旦出错就会影响并发性能,增加了开发人员编程的复杂度。而本申请实施例中的iBoot模块作为***软件,可供开发人员当作黑匣子来直接引用,也就是说,开发人员只需要在后端应用程序编写中ModelCore类中的方法即可,示例程序参见上述步骤S205中给出的有关目标类的示例程序。ModelCore类中的方法不涉及对ModelApi类中post方法的定义,也不需要使用任何异步操作语法,却仍然能够通过iBoot模块实现异步处理,这样,能够在确保并发处理性能的前提下,大大降低开发人员编程的复杂度。
结合图3所示的通信***,如图4所示,为本申请实施例提供的Python程序服务化方法的具体示例,该示例包括如下步骤:
S401、客户端设备通过“/api/model”端点向HTTP服务监听模块发送HTTP POST请求,其中,HTTP POST请求中的请求体包括操作动作的名称以及与该操作动作对应的参数列表。相应地,HTTP服务监听模块通过“/api/model”端点接收来自客户端设备的HTTP POST请求。
示例性地,HTTP POST请求中的请求体为:
S402、HTTP服务监听模块根据HTTP POST请求中的端点信息“/api/model”,以异步方式调用ModelApi中的post方法对HTTP POST请求进行处理。
S403、API适配模块提取HTTP POST请求中的请求体,并将请求体放入变量:input。
S404、API适配模块构建用于存储应用程序的运行结果的变量:output。
S405、API适配模块以input和output为参数,创建并启动新线程:model_runner。
启动新线程之后,API适配模块执行如下步骤S406,直至如下步骤S407至S412执行完毕。
S406、API适配模块以异步的方式等待线程model_runner执行完毕。
S407、异步I/O封装调用模块从input中获取操作动作的名称和参数列表。
S408、异步I/O封装调用模块为ModelCore类创建应用程序实例对象。
在本申请实施例中,ModelCore类在后端应用程序中定义,并且需要被预先引入到iBoot模块中。
S409、异步I/O封装调用模块根据反射机制从后端应用程序调用应用程序实例对象中与操作动作同名的方法对象。
S410、异步I/O封装调用模块以参数列表为输入参数,执行方法对象。
S411、异步I/O封装调用模块将该方法对象的执行结果存储至output。
在本申请实施例中,应用程序的运行结果即为该方法对象的执行结果。
S412、异步I/O封装调用模块设置线程结束标识。
S413、API适配模块经由HTTP服务监听模块,通过“/api/model”端点向客户端设备发送HTTP POST响应,HTTP POST响应包括应用程序的运行结果。相应地,客户端设备通过“/api/model”端点,经由HTTP服务监听模块接收来自API适配模块的HTTP POST响应。
图4所示具体示例的技术效果参见图2所示的实施例的技术效果描述,在此不再赘述。
上述主要从Python程序服务化装置执行Python程序服务化方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,Python程序服务化装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对Python程序服务化装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可选的,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。此外,这里的“模块”可以指特定专用集成电路(application-specific integrated circuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。
在采用功能模块划分的情况下,图5示出了一种Python程序服务化装置50的结构示意图。如图5所示,该Python程序服务化装置包括处理模块501和API502。
在一些实施例中,该Python程序服务化装置50还可以包括存储模块(图5中未示出),用于存储程序指令和数据。
API502,用于接收来自客户端设备的HTTP请求;处理模块501,用于以异步方式调用API对应的处理程序对HTTP请求进行处理,以提取HTTP请求中的请求体,并将请求体放入第一变量;处理模块501,还用于构建用于存储应用程序的运行结果的第二变量;处理模块501,还用于以第一变量和第二变量为参数,创建第一线程;处理模块501,还用于启动第一线程,以获得应用程序的运行结果;API502,还用于向客户端设备发送HTTP响应,HTTP响应包括应用程序的运行结果。
作为一种可能的实现,处理模块501,还用于启动第一线程,以获得应用程序的运行结果,包括:用于为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用应用程序实例对象中与第一变量中的操作动作同名的方法对象;以第一变量中与操作动作对应的参数列表为输入参数,执行方法对象,以获得应用程序的运行结果。
上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用硬件的形式实现上述功能模块的功能的情况下,图6示出了另一种Python程序服务化装置60的结构示意图。如图6所示,该Python程序服务化装置包括处理器601,存储器602以及总线603。处理器601与存储器602之间可以通过总线603连接。
处理器601是Python程序服务化装置60的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器601可以是一个通用中央处理单元(centralprocessing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一种实施例,处理器601可以包括一个或多个CPU,例如图6中所示的CPU 0和CPU 1。
存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
作为一种可能的实现方式,存储器602可以独立于处理器601存在,存储器602可以通过总线603与处理器601相连接,用于存储指令或者程序代码。处理器601调用并执行存储器602中存储的指令或程序代码时,能够实现本发明实施例提供的Python程序服务化方法。
另一种可能的实现方式中,存储器602也可以和处理器601集成在一起。
总线603,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、***设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图6示出的结构并不构成对该Python程序服务化装置60的限定。除图6所示部件之外,该Python程序服务化装置60可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
可选的,如图6所示,本申请实施例提供的Python程序服务化装置60还可以包括通信接口604。
通信接口604,用于与其他设备通过通信网络连接。该通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,WLAN)等。通信接口604可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。
在一种可能的实现方式中,本申请实施例提供的Python程序服务化装置60中,通信接口604还可以集成在处理器701中,本申请实施例对此不做具体限定。
作为一个示例,结合图5,Python程序服务化装置50中的处理模块501实现的功能与图6中的处理器601的功能相同,Python程序服务化装置50中的API502实现的功能与图6中的通信接口604的功能相同。或者,Python程序服务化装置50中的处理模块501和API502实现的功能与图6中的处理器601的功能相同。
作为一种可能的产品形态,本申请实施例的Python程序服务化装置,还可以使用下述来实现:一个或多个现场可编程门阵列(field programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明。在实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当计算机执行该指令时,该计算机执行上述方法实施例所示的方法流程中的各个步骤。
本发明的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行上述方法实施例所示的方法流程中的各个步骤。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘。随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述以合适的组合、或者本领域数值的任何其他形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途ASIC中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
由于本实施例提供的Python程序服务化装置、计算机可读存储介质、计算机程序产品可以应用于上述实施例提供的Python程序服务化方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种Python程序服务化方法,其特征在于,包括:
通过应用程序编程接口API接收来自客户端设备的超文本传输协议HTTP请求;
以异步方式调用所述API对应的处理程序对所述HTTP请求进行处理,以提取所述HTTP请求中的请求体,并将所述请求体放入第一变量;
构建用于存储应用程序的运行结果的第二变量;
以所述第一变量和所述第二变量为参数,创建第一线程;
启动所述第一线程,以获得所述应用程序的运行结果;
通过所述API向所述客户端设备发送HTTP响应,所述HTTP响应包括所述应用程序的运行结果。
2.根据权利要求1所述的方法,其特征在于,所述HTTP请求中的请求体包括操作动作的名称和与所述操作动作对应的参数列表。
3.根据权利要求2所述的方法,其特征在于,所述启动所述第一线程,以获得所述应用程序的运行结果,包括:
为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用所述应用程序实例对象中与所述第一变量中的所述操作动作同名的方法对象;
以所述第一变量中与所述操作动作对应的所述参数列表为输入参数,执行所述方法对象,以获得所述应用程序的运行结果。
4.一种Python程序服务化装置,其特征在于,包括:处理模块和程序编程接口API;
所述API,用于接收来自客户端设备的超文本传输协议HTTP请求;
所述处理模块,用于以异步方式调用所述API对应的处理程序对所述HTTP请求进行处理,以提取所述HTTP请求中的请求体,并将所述请求体放入第一变量;
所述处理模块,还用于构建用于存储应用程序的运行结果的第二变量;
所述处理模块,还用于以所述第一变量和所述第二变量为参数,创建第一线程;
所述处理模块,还用于启动所述第一线程,以获得所述应用程序的返回结果;
所述API,还用于向所述客户端设备发送HTTP响应,所述HTTP响应包括所述应用程序的运行结果。
5.根据权利要求4所述的Python程序服务化装置,其特征在于,所述HTTP请求中的请求体包括操作动作的名称和与所述操作动作对应的参数列表。
6.根据权利要求5所述的Python程序服务化装置,其特征在于,所述处理模块,还用于启动所述第一线程,以获得所述应用程序的运行结果,包括:
用于为预先配置的目标类创建应用程序实例对象,并根据反射机制从后端应用程序调用所述应用程序实例对象中与所述第一变量中的所述操作动作同名的方法对象;以所述第一变量中与所述操作动作对应的所述参数列表为输入参数,执行所述方法对象,以获得所述应用程序的运行结果。
7.一种Python程序服务化装置,其特征在于,包括:处理器;
所述处理器用于读取存储器中的计算机执行指令,并执行所述计算机执行指令,以使所述Python程序服务化装置执行如权利要求1-3中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被所述Python程序服务化装置执行时,实现如权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111320340.9A CN114138507B (zh) | 2021-11-09 | 2021-11-09 | Python程序服务化方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111320340.9A CN114138507B (zh) | 2021-11-09 | 2021-11-09 | Python程序服务化方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138507A true CN114138507A (zh) | 2022-03-04 |
CN114138507B CN114138507B (zh) | 2024-05-17 |
Family
ID=80392513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111320340.9A Active CN114138507B (zh) | 2021-11-09 | 2021-11-09 | Python程序服务化方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138507B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782864A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种改善Web服务器通信服务稳定性的方法 |
CN102281302A (zh) * | 2011-08-24 | 2011-12-14 | 中国联合网络通信集团有限公司 | 资源访问处理方法及*** |
CN102447878A (zh) * | 2011-12-23 | 2012-05-09 | 南京超然科技有限公司 | 一种电视墙服务器和录播服务器的远程截包方法 |
US20130080505A1 (en) * | 2011-09-28 | 2013-03-28 | Microsoft Corporation | Web API Framework |
CN106656920A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | Http服务的处理方法及装置 |
CN107943457A (zh) * | 2017-11-17 | 2018-04-20 | 中山大学 | 一种面向业务对象的工作流建模方法及*** |
CN111770043A (zh) * | 2019-04-01 | 2020-10-13 | 网易(杭州)网络有限公司 | 游戏数据通信方法、装置、存储介质及电子设备 |
CN113448545A (zh) * | 2021-06-23 | 2021-09-28 | 北京百度网讯科技有限公司 | 机器学习模型服务化的方法、设备、存储介质及程序产品 |
-
2021
- 2021-11-09 CN CN202111320340.9A patent/CN114138507B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782864A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种改善Web服务器通信服务稳定性的方法 |
CN102281302A (zh) * | 2011-08-24 | 2011-12-14 | 中国联合网络通信集团有限公司 | 资源访问处理方法及*** |
US20130080505A1 (en) * | 2011-09-28 | 2013-03-28 | Microsoft Corporation | Web API Framework |
CN102447878A (zh) * | 2011-12-23 | 2012-05-09 | 南京超然科技有限公司 | 一种电视墙服务器和录播服务器的远程截包方法 |
CN106656920A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | Http服务的处理方法及装置 |
CN107943457A (zh) * | 2017-11-17 | 2018-04-20 | 中山大学 | 一种面向业务对象的工作流建模方法及*** |
CN111770043A (zh) * | 2019-04-01 | 2020-10-13 | 网易(杭州)网络有限公司 | 游戏数据通信方法、装置、存储介质及电子设备 |
CN113448545A (zh) * | 2021-06-23 | 2021-09-28 | 北京百度网讯科技有限公司 | 机器学习模型服务化的方法、设备、存储介质及程序产品 |
Non-Patent Citations (2)
Title |
---|
BEN DOMENICO 等: "Using python client libraries to access remote servers via Web Coverage Services", 《RESEARCHGATE》, 31 January 2009 (2009-01-31), pages 1 - 12 * |
王雄 等: "一种面向对象的Web Service API框架设计", 《计算机技术与发展》, 9 September 2009 (2009-09-09), pages 54 - 57 * |
Also Published As
Publication number | Publication date |
---|---|
CN114138507B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016192556A1 (zh) | 接口调用方法、装置及终端 | |
CN108572965B (zh) | 一种资源加载方法及装置 | |
US8978023B2 (en) | Canonical mechanism for securely assembling features into a mobile application | |
CN111176626B (zh) | 跨编程语言的代码调用方法及装置、介质、设备 | |
US10185558B2 (en) | Language-independent program composition using containers | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
CN111209122B (zh) | 接口调用方法、装置、电子设备及存储介质 | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
WO2020248383A1 (zh) | 基于跨平台的数据处理方法、装置及计算机设备 | |
CN114398191A (zh) | 远程服务调用方法、***、计算机设备及存储介质 | |
CN108376066B (zh) | 代码处理装置及代码处理方法 | |
CN106649488A (zh) | 多数据源交互接口的调用方法及装置 | |
US9229980B2 (en) | Composition model for cloud-hosted serving applications | |
CN112835615B (zh) | 软件开发工具包的插件化处理方法、装置及电子设备 | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
CN116185495B (zh) | 计算函数构建方法、计算引擎、电子设备及可读存储介质 | |
CN108920246B (zh) | 表单草稿组件共享方法及装置、终端设备及可读存储介质 | |
CN110245027B (zh) | 一种进程间通信的方法和设备 | |
CN112214325A (zh) | Fpga任务动态编排方法、装置、芯片和存储介质 | |
CN109669720B (zh) | 基于Promise的链式异步请求处理方法、装置及电子设备 | |
CN114138507B (zh) | Python程序服务化方法、装置及计算机可读存储介质 | |
CN113961194A (zh) | 基于Flutter跨应用的工程构建方法、***、终端及介质 | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
CN113626001B (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN112714148A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |