基于容器的Python远程动态调试方法及系统转让专利

申请号 : CN202210197929.2

文献号 : CN114297089B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周少鹏王滨王旭毕志城

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请提供一种基于容器的Python远程动态调试方法及系统,该方法包括:获取远程下发的待调试Python代码文件;解析待调试Python代码文件,确定待调试Python代码文件的组件及系统环境依赖列表;依据待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;依据组件与系统环境安装包,在容器中安装待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;在容器Python调试环境中运行待调试Python代码文件。该方法可以实现Python代码文件的远程共享调试,提高Python代码文件调试环境的可扩展性。

权利要求 :

1.一种基于容器的Python远程动态调试方法,其特征在于,包括:获取远程下发的待调试Python代码文件;

解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表;

依据所述待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;

依据所述组件与系统环境安装包,在容器中安装所述待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;

在所述容器Python调试环境中运行所述待调试Python代码文件;

其中,所述容器中构建有Python代码文件自动化解析模块;所述Python代码文件自动化解析模块包含组件依赖分析功能以及系统环境依赖分析功能;

所述解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表,包括:通过所述Python代码文件自动化解析模块解析所述待调试Python代码文件,确定所述待调试Python代码文件依赖的组件,以及所述待调试Python代码文件依赖的系统环境,得到所述待调试Python代码文件的组件及系统环境依赖列表;

其中,所述解析所述待调试Python代码文件之前,还包括:比较所述待调试Python代码文件与上一次远程下发的待调试Python代码文件;

在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件不相同的情况下,确定执行所述解析所述待调试Python代码文件的操作;

在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件相同的情况下,将上一次远程下发的待调试Python代码文件的运行结果作为所述待调试Python代码文件的运行结果。

2.根据权利要求1所述的方法,其特征在于,所述容器中构建有动态调试与容器调用接口集;所述动态调试与容器调用接口集包括容器文件下发接口以及容器文件运行接口;

所述获取远程下发的待调试Python代码文件,包括:

获取通过所述容器文件下发接口向所述容器远程下发的待调试Python代码文件;

所述在所述容器Python调试环境运行所述待调试Python代码文件,包括:在检测到通过所述容器文件运行接口下发的运行指令的情况下,在所述容器Python调试环境运行所述待调试Python代码文件。

3.根据权利要求2所述的方法,其特征在于,所述动态调试与容器调用接口集还包括过程查询接口和/或结果查询接口;

所述方法还包括:

在接收到通过所述过程查询接口下发的过程查询指令的情况下,获取待调试Python代码文件的运行过程信息,并对所述运行过程信息进行格式化后返回给查询发起方设备;

和/或,

在接收到通过所述结果查询接口下发的结果查询指令的情况下,获取待调试Python代码文件的运行结果信息,并对所述运行结果信息进行格式化后返回给查询发起方设备。

4.一种基于容器的Python远程动态调试系统,其特征在于,包括:获取单元,用于获取远程下发的待调试Python代码文件;

解析单元,用于解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表;

所述获取单元,还用于依据所述待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;

安装单元,用于依据所述组件与系统环境安装包,在容器中安装所述待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;

调试单元,用于在所述容器Python调试环境中运行所述待调试Python代码文件;

其中,所述容器中构建有Python代码文件自动化解析模块;所述Python代码文件自动化解析模块包含组件依赖分析功能以及系统环境依赖分析功能;

所述解析单元解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表,包括:通过所述Python代码文件自动化解析模块解析所述待调试Python代码文件,确定所述待调试Python代码文件依赖的组件,以及所述待调试Python代码文件依赖的系统环境,得到所述待调试Python代码文件的组件及系统环境依赖列表;

其中,所述解析单元解析所述待调试Python代码文件之前,还包括:比较所述待调试Python代码文件与上一次远程下发的待调试Python代码文件;

在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件不相同的情况下,确定执行所述解析所述待调试Python代码文件的操作;

在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件相同的情况下,将上一次远程下发的待调试Python代码文件的运行结果作为所述待调试Python代码文件的运行结果。

5.根据权利要求4所述的系统,其特征在于,所述容器中构建有动态调试与容器调用接口集;所述动态调试与容器调用接口集包括容器文件下发接口以及容器文件运行接口;

所述获取单元获取远程下发的待调试Python代码文件,包括:获取通过所述容器文件下发接口向所述容器远程下发的待调试Python代码文件;

所述调试单元在所述容器Python调试环境运行所述待调试Python代码文件,包括:在检测到通过所述容器文件运行接口下发的运行指令的情况下,在所述容器Python调试环境运行所述待调试Python代码文件。

6.根据权利要求5所述的系统,其特征在于,所述动态调试与容器调用接口集还包括过程查询接口和/或结果查询接口;

所述获取单元,还用于在接收到通过所述过程查询接口下发的过程查询指令的情况下,获取待调试Python代码文件的运行过程信息,并对所述运行过程信息进行格式化后返回给查询发起方设备;

和/或,

在接收到通过所述结果查询接口下发的结果查询指令的情况下,获取待调试Python代码文件的运行结果信息,并对所述运行结果信息进行格式化后返回给查询发起方设备。

说明书 :

基于容器的Python远程动态调试方法及系统

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种基于容器的Python远程动态调试方法及系统。

背景技术

[0002] 当前,以数字化、网络化、智能化为主要特征的互联网、物联网和工业互联网蓬勃兴起,加速推动了全球经济结构、产业结构、国际分工发生深刻变革。在日新月异的发展中,产品需求不断迭代,技术开发的速度不断加快,便捷、高效和易于维护扩展的开发调试环境显得尤为重要。
[0003] 然而,传统代码调试方案中,需要在本地搭建专门的代码调试运行环境,无法支持远程调试,且调试环境难以便捷移植扩展。

发明内容

[0004] 有鉴于此,本申请提供一种基于容器的Python远程动态调试方法及系统。
[0005] 具体地,本申请是通过如下技术方案实现的:
[0006] 根据本申请实施例的第一方面,提供一种基于容器的Python远程动态调试方法,包括:
[0007] 获取远程下发的待调试Python代码文件;
[0008] 解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表;
[0009] 依据所述待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;
[0010] 依据所述组件与系统环境安装包,在容器中安装所述待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;
[0011] 在所述容器Python调试环境中运行所述待调试Python代码文件。
[0012] 根据本申请实施例的第二方面,提供一种基于容器的Python远程动态调试系统,包括:
[0013] 获取单元,用于获取远程下发的待调试Python代码文件;
[0014] 解析单元,用于解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表;
[0015] 所述获取单元,还用于依据所述待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;
[0016] 安装单元,用于依据所述组件与系统环境安装包,在容器中安装所述待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;
[0017] 调试单元,用于在所述容器Python调试环境中运行所述待调试Python代码文件。
[0018] 本申请实施例的基于容器的Python远程动态调试方法,在获取到了远程下发的待调试Python代码文件的情况下,解析获取到的待调试Python代码文件,确定待调试Python代码文件的组件及系统环境依赖列表,并依据该组件及系统环境依赖列表,从依赖组件与系统环境库中获取对应的组件与系统环境安装包,进而,依据该组件与系统环境安装包,在容器中安装待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境,并在该容器Python调试环境中运行待调试的Python代码文件,通过采用容器技术实时动态构建Python代码文件调试所需的调试环境,无需在本地搭建专门的Python代码文件调试环境,实现了Python代码文件的远程共享调试,提高了Python代码文件调试环境的可扩展性。

附图说明

[0019] 图1为本申请一示例性实施例示出的一种基于容器的Python远程动态调试方法的流程示意图;
[0020] 图2为本申请又一示例性实施例示出的另一种基于容器的Python远程动态调试方法的流程示意图;
[0021] 图3为本申请又一示例性实施例示出的另一种基于容器的Python远程动态调试方法的流程示意图;
[0022] 图4为本申请一示例性实施例示出的一种基于容器的Python远程动态调试方法的流程示意图;
[0023] 图5为本申请实施例提供的一种基于容器的Python远程动态调试系统的结构示意图;
[0024] 图6为本申请实施例提供的一种电子设备的硬件结构示意图。

具体实施方式

[0025] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0026] 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0027] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例提供的技术方案中涉及的部分术语进行简单说明。
[0028] 容器技术:指将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。
[0029] 容器化技术:指软件开发的一种方法,在这种方法中,程序和它所依赖的组件和集合包,以及相关的环境变量配置文件都会被完全打包成容器镜像,进行单元测试,最后将这个容器部署到服务器的操作系统中。容器化技术能够更高效的利用系统资源,没有硬件虚拟以及运行完整操作系统等额外开销。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。同时,容器使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。
[0030] 虚拟化技术:指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU(Center Process Unit,中央处理单元)的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
[0031] Python:一种跨平台的计算机程序设计语言,属于一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
[0032] 程序调试:将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。
[0033] 为了使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
[0034] 请参见图1,为本申请实施例提供的一种基于容器的Python远程动态调试方法的流程示意图,如图1所示,该基于容器的Python远程动态调试方法可以包括以下步骤:
[0035] 步骤S100、获取远程下发的待调试Python代码文件。
[0036] 本申请实施例中,Python代码文件不再局限于本地调试,而是可以通过远程下发的方式,将需要调试的Python代码文件(本文中称为待调试Python代码文件)下发至用于进行Python代码文件的远程调试的容器中。
[0037] 例如,用户可以通过网页,将待调试Python代码文件远程下发至用于Python代码文件的远程调试的容器。
[0038] 步骤S110、解析该待调试Python代码文件,确定该待调试Python代码文件的组件及系统环境依赖列表。
[0039] 本申请实施例中,为了实现Python代码文件的远程调试,在获取到了远程下发的待调试Python代码文件的情况下,可以对该待调试Python代码文件进行解析,确定该待调试Python代码文件依赖的组件以及系统环境,得到该待调试Python代码文件的组件及系统环境依赖列表。
[0040] 示例性的,该待调试Python代码文件的组件及系统环境依赖列表包括该待调试Python代码文件依赖的组件以及系统环境。
[0041] 步骤S120、依据该待调试Python代码文件的组件及系统环境依赖列表,从python依赖组件与系统环境库中获取对应的组件与系统环境安装包。
[0042] 本申请实施例中,可以预先构建python依赖组件与系统环境库,该Python依赖组件与系统环境库中可以包括各种Python文件依赖的组件以及系统环境的安装包。
[0043] 相应地,在确定了待调试Python代码文件的组件及系统环境依赖列表的情况下,可以依据待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包,即待调试Python代码文件依赖的组件以及系统环境的安装包。
[0044] 步骤S130、依据该组件与系统环境安装包,在容器中安装待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境。
[0045] 本申请实施例中,在获取到了待调试Python代码文件及系统环境依赖列表对应的组件与系统环境安装包的情况下,可以依据该组件与系统环境安装包,在容器中安装待调试Python代码文件依赖的组件与系统环境,实现自动化容器python环境搭建,得到待调试Python代码文件的调试环境(可以称为容器Python调试环境)。
[0046] 步骤S140、在该容器Python调试环境中运行待调试Python代码文件。
[0047] 本申请实施例中,在按照上述方式得到了容器Python调试环境的情况下,可以在该容器Python调试环境中运行待调试Python代码文件,实现对待调试Python代码文件的远程调试。
[0048] 可见,在图1所示方法流程中,在获取到了远程下发的待调试Python代码文件的情况下,解析获取到的待调试Python代码文件,确定待调试Python代码文件的组件及系统环境依赖列表,并依据该组件及系统环境依赖列表,从依赖组件与系统环境库中获取对应的组件与系统环境安装包,进而,依据该组件与系统环境安装包,在容器中安装待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境,并在该容器Python调试环境中运行待调试的Python代码文件,通过采用容器技术实时动态构建Python代码文件调试所需的调试环境,无需在本地搭建专门的Python代码文件调试环境,实现了Python代码文件的远程共享调试,提高了Python代码文件调试环境的可扩展性。
[0049] 在一些实施例中,如图2所示,上述解析待调试Python代码文件之前,还可以包括:
[0050] 步骤S101、比较待调试Python代码文件与上一次远程下发的待调试Python代码文件;在待调试Python代码文件与上一次远程下发的待调试Python代码文件不相同的情况下,确定执行解析待调试Python代码文件的操作。
[0051] 示例性的,考虑到实际场景中,可能会出现同一Python代码文件多次下发的情况,例如,由于用户误操作或者用户的一些操作习惯,导致同一Python代码文件多次下发,为了避免多次对相同Python代码文件进行解析和容器Python调试环境构建造成资源浪费,在对当前获取到的待调试Python代码文件进行解析之前,可以确定当前获取到的待调试Python代码文件与上一次获取到的Python文件是否相同。
[0052] 相应地,在获取到远程下发的待调试Python代码文件的情况下,在按照上述方式对该待调试Python代码文件进行解析之前,可以先比较该待调试Python代码文件与上一次远程下发的待调试Python代码文件,以确定二者是否相同。
[0053] 在二者不相同的情况下,可以按照上述步骤S110 步骤S140中描述的方式对该待~调试Python代码文件进行调试处理。
[0054] 在一个示例中,如图2所示,上述比较待调试Python代码文件与上一次远程下发的待调试Python代码文件之后,还包括:
[0055] 步骤S150、在待调试Python代码文件与上一次远程下发的待调试Python代码文件相同的情况下,将上一次远程下发的待调试Python代码文件的运行结果作为待调试Python代码文件的运行结果。
[0056] 示例性的,为了避免多次对相同Python代码文件进行解析和容器Python调试环境构建造成资源浪费,在确定待调试Python代码文件与上一次远程下发的待调试Python代码文件相同的情况下,可以不需要再次对该待调试Python代码文件进行解析和容器Python调试环境构建,也不需要再次运行该待调试Python代码文件,而是可以将上一次远程下发的待调试Python代码文件的运行结果作为所述待调试Python代码文件的运行结果。
[0057] 在一些实施例中,上述容器中可以构建有动态调试与容器调用接口集,该动态调试与容器调用接口集可以包括容器文件下发接口以及容器文件运行接口。
[0058] 如图3所示,步骤S100中,获取远程下发的待调试Python代码文件,可以包括:
[0059] 步骤S102、获取通过容器文件下发接口向上述容器远程下发的待调试Python代码文件;
[0060] 步骤S140中,在容器python调试环境运行待调试Python代码文件,可以包括:
[0061] 步骤S141、在检测到通过容器文件运行接口下发的运行指令的情况下,在容器Python调试环境运行待调试Python代码文件。
[0062] 示例性的,为了实现Python代码文件的远程调试,并提高调试过程的可控性,可以在用于进行Python代码文件远程调试的容器中预先构建动态调试与容器调用接口集。
[0063] 示例性的,该动态调试与容器调用接口集可以包括但不限于用于进行远程Python代码文件下发的接口(可以称为容器文件下发接口)以及用于控制Python代码文件运行的接口(可以称为容器文件运行接口)。
[0064] 相应地,用户可以通过调用动态调试与容器调用接口集中的容器文件下发接口,远程向容器下发待调试Python代码文件。
[0065] 例如,用户可以通过网页调用动态调试与容器调用接口集中的容器文件下发接口,远程向容器下发待调试Python代码文件。
[0066] 示例性的,在按照上述方式对待调试Python代码文件进行解析,并完成了容器Python调试环境的构建的情况下,可以向调试请求方设备返回响应消息,以提示相关人员容器Python调试环境已搭建完成,此时,相关人员可以根据需求调用动态调试与容器调用接口集中的容器文件运行接口,向容器下发运行指令,以触发待调试Python代码文件的运行。
[0067] 相应地,在检测到通过容器文件运行接口下发的运行指令的情况下,可以在容器Python调试环境中运行待调试Python代码文件。
[0068] 在一个示例中,上述动态调试与容器调用接口集还可以包括过程查询接口;
[0069] 上述方法还可以包括:
[0070] 在接收到通过过程查询接口下发的过程查询指令的情况下,获取待调试Python代码文件的运行过程信息,并对获取到的运行过程信息进行格式化后返回给查询发起方设备。
[0071] 示例性的,为了便于相关人员实时了解Python代码文件运行过程,上述动态调试与容器调用接口集还可以包括过程查询接口。
[0072] 示例性的,相关人员可以通过调用过程查询接口向容器下发过程查询指令,以查询Python代码文件的运行过程信息。
[0073] 相应地,在接收到通过过程查询接口下发的过程查询指令的情况下,可以获取待调试Python代码文件的运行过程信息,并将获取到的运行过程信息格式化为特定格式后,返回给查询发起方设备。
[0074] 示例性的,运行过程信息可以包括但不限于代码文件的运行错误信息、正常运行信息、Python代码文件运行过程中的日志记录信息以及打印信息等信息中的部分或全部。
[0075] 在一个示例中,上述动态调试与容器调用接口集还可以包括结果查询接口;
[0076] 上述方法还可以包括:
[0077] 在接收到通过结果查询接口下发的结果查询指令的情况下,获取待调试Python代码文件的运行结果信息,并对获取到的运行结果信息进行格式化后返回给查询发起方设备。
[0078] 示例性的,为了便于相关人员实时了解Python代码文件运行结果,上述动态调试与容器调用接口集还可以包括结果查询接口。
[0079] 示例性的,相关人员可以通过调用结果查询接口向容器下发结果查询指令,以查询Python代码文件的运行结果信息,并将获取到的运行结构信息格式化为特定格式后,返回给查询发起方设备。
[0080] 需要说明的是,在本申请实施例中,通过上述过程查询接口还可以获取容器的相关状态信息,如组件安装是否成功、系统环境安装是否成功,容器环境是否构建成功等。此外,上述动态调试与容器调用接口集还可以包括运行停止接口,调用该运行停止接口可以向容器下发停止指令,控制容器停止运行Python代码文件。
[0081] 例如,在Python代码文件运行的过程中发现了错误,但由于Python代码文件完整运行的时间会比较长,若等待Python代码文件运行完成后再进行错误修改,可能会比较耗时,因此,可以在发现错误,如参数错误的情况下,控制Python代码文件停止运行,并进行参数调整,依据调整后的参数控制Python代码文件重新运行。
[0082] 在一些实施例中,上述容器中可以构建有Python代码文件自动化解析模块;该Python代码文件自动化解析模块可以包含组件依赖分析功能以及系统环境依赖分析功能;
[0083] 上述解析待调试Python代码文件,确定待调试Python代码文件的组件及系统环境依赖列表,可以包括:
[0084] 通过Python代码文件自动化解析模块解析待调试Python代码文件,确定待调试Python代码文件依赖的组件,以及待调试Python代码文件依赖的系统环境。
[0085] 示例性的,为了实现容器Python调试环境的自动搭建,可以在用于进行Python代码文件远程调试的容器中预先构建Python代码文件自动化解析模块。
[0086] 示例性的,该Python代码文件自动化解析模块可以包含用于确定待调试Python代码文件依赖的组件的功能(本文中称为组件依赖分析功能)以及用于确定待调试Python代码文件依赖的系统环境的功能(本文中称为系统环境依赖分析功能)。
[0087] 在获取到远程下发的待调试Python代码文件的情况下,可以调用Python代码文件自动化解析模块对该待调试Python代码文件进行解析,确定该待调试Python代码文件依赖的组件,以及待调试Python代码文件依赖的系统环境,得到该待调试Python代码文件的组件及系统环境依赖列表。
[0088] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。
[0089] 在该实施例中,为解决现有技术中Python代码文件调试只能在本地配置环境,过程复杂,难以扩展,不易维护,较为消耗资源的问题,提出一种基于容器的Python远程动态调试器构建方案。
[0090] 示例性的,通过构建动态调试与容器调用接口集,Python代码文件自动化解析模块与依赖组件与环境库,将待调试的Python文件通过下发接口远程下发到容器(可以称为远程容器)中,并自动解析所获取到的Python代码文件,得到其组件及系统环境依赖列表,从Python依赖组件与系统环境库中拉取所需的组件与系统环境安装包,进行自动化容器Python调试环境搭建。
[0091] 容器Python调试环境搭建完成后,可以通过接口向容器发送Python代码文件运行指令,控制运行待调试Python代码文件。
[0092] 在Python代码文件运行之后,可以通过过程查询接口和/或结果查询接口,实时查询Python代码文件运行过程和/或运行结果的相关动态信息。
[0093] 通过上述方案,可以在网页上调试Python代码文件,与传统方案中必须在本地进行调试的实现方案相比,本申请实施例提供的技术方案可以在本机资源紧张的情况下进行Python开发,不需要在本地搭建Python调试环境,且可以实现远程共享调试,采用容器技术构建,调试服务可以动态编排伸缩且稳定性极高。
[0094] 下面结合体图4对本申请实施例提供的基于容器的Python远程动态调试方案的实现步骤进行说明。
[0095] 如图4所示,在该实施例中,基于容器的Python远程动态调试方法可以包括以下步骤:
[0096] 步骤1、构建动态调试与容器调用接口集。
[0097] 示例性的,动态调试与容器调用接口机可以包括但不限于:容器文件下发接口、容器文件运行接口,运行停止接口、过程查询接口、结果查询接口等接口。
[0098] 步骤2、构建Python代码文件自动化解析模块。
[0099] 示例性的,Python代码文件自动化解析模块可以包含组件依赖分析功能,用于分析Python代码文件依赖的组件,以及,系统环境依赖分析功能,用于分析Python代码文件依赖的系统环境。
[0100] 示例性的,Python代码文件自动化解析模块还可以包括参数分析功能以及函数分析功能,以实现Python代码文件运行的参数分析,以及,分析Python代码文件运行过程中需要运行的函数等。
[0101] 步骤3、构建Python依赖组件与系统环境库。
[0102] 示例性的,Python依赖组件与系统环境库属于支撑库,用于支撑Python容器调试环境自动拉取与编译构建。
[0103] 步骤4、将待调试的python文件通过容器下发接口远程下发到容器中。
[0104] 步骤5、通过容器中构建的Python代码文件自动化解析模块,解析所获取的Python代码文件,得到其组件与系统环境依赖列表。
[0105] 步骤6、基于获得的组件与系统环境依赖列表,从Python依赖组件与系统环境库中拉取所需的组件与系统环境安装包。
[0106] 步骤7、基于所拉取的组件与系统环境安装包,进行自动化容器Python环境搭建,即自动安装所拉取的组件与系统环境。
[0107] 步骤8、容器环境搭建完成后,通过容器文件运行接口向容器发送Python代码文件运行指令,以控制Python代码文件的运行。
[0108] 步骤9、若需停止运行Python代码文件,通过运行停止接口发送停止指令。
[0109] 步骤10、通过过程查询接口以及结果查询接口,实时查询Python代码文件运行过程与结果的相关动态信息。
[0110] 以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:
[0111] 请参见图5,为本申请实施例提供的一种基于容器的Python远程动态调试系统的结构示意图,如图5所示,该基于容器的Python远程动态调试系统可以包括:
[0112] 获取单元510,用于获取远程下发的待调试Python代码文件;
[0113] 解析单元520,用于解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表;
[0114] 获取单元510,还用于依据所述待调试Python代码文件的组件及系统环境依赖列表,从Python依赖组件与系统环境库中获取对应的组件与系统环境安装包;
[0115] 安装单元530,用于依据所述组件与系统环境安装包,在容器中安装所述待调试Python代码文件依赖的组件与系统环境,得到容器Python调试环境;
[0116] 调试单元540,用于在所述容器Python调试环境中运行所述待调试Python代码文件。
[0117] 在一些实施例中,所述解析单元520解析所述待调试Python代码文件之前,还包括:
[0118] 比较所述待调试Python代码文件与上一次远程下发的待调试Python代码文件;
[0119] 在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件不相同的情况下,确定执行所述解析所述待调试Python代码文件的操作。
[0120] 在一些实施例中,所述解析单元520比较所述待调试Python代码文件与上一次远程下发的待调试Python代码文件之后,还包括:
[0121] 在所述待调试Python代码文件与上一次远程下发的待调试Python代码文件相同的情况下,将上一次远程下发的待调试Python代码文件的运行结果作为所述待调试Python代码文件的运行结果。
[0122] 在一些实施例中,所述容器中构建有动态调试与容器调用接口集;所述动态调试与容器调用接口集包括容器文件下发接口以及容器文件运行接口;
[0123] 所述获取单元510获取远程下发的待调试Python代码文件,包括:
[0124] 获取通过所述容器文件下发接口向所述容器远程下发的待调试Python代码文件;
[0125] 所述调试单元540在所述容器Python调试环境运行所述待调试Python代码文件,包括:
[0126] 在检测到通过所述容器文件运行接口下发的运行指令的情况下,在所述容器Python调试环境运行所述待调试Python代码文件。
[0127] 在一些实施例中,所述动态调试与容器调用接口集还包括过程查询接口和/或结果查询接口;
[0128] 所述获取单元510,还用于在接收到通过所述过程查询接口下发的过程查询指令的情况下,获取待调试Python代码文件的运行过程信息,并对所述运行过程信息进行格式化后返回给查询发起方设备;
[0129] 和/或,
[0130] 在接收到通过所述结果查询接口下发的结果查询指令的情况下,获取待调试Python代码文件的运行结果信息,并对所述运行结果信息进行格式化后返回给查询发起方设备。
[0131] 在一些实施例中,所述容器中构建有Python代码文件自动化解析模块;所述Python代码文件自动化解析模块包含组件依赖分析功能以及系统环境依赖分析功能;
[0132] 所述解析单元520解析所述待调试Python代码文件,确定所述待调试Python代码文件的组件及系统环境依赖列表,包括:
[0133] 通过所述Python代码文件自动化解析模块解析所述待调试Python代码文件,确定所述待调试Python代码文件依赖的组件,以及所述待调试Python代码文件依赖的系统环境。
[0134] 请参见图6,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可包括处理器601、存储有机器可执行指令的存储器602。处理器601与存储器602可经由系统总线603通信。并且,通过读取并执行存储器602中与基于容器的Python远程动态调试逻辑对应的机器可执行指令,处理器601可执行上文描述的基于容器的Python远程动态调试方法。
[0135] 本文中提到的存储器602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0136] 在一些实施例中,还提供了一种机器可读存储介质,如图6中的存储器602,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的基于容器的Python远程动态调试方法。例如,所述机器可读存储介质可以是ROM、RAM、CD‑ROM、磁带、软盘和光数据存储设备等。
[0137] 本申请实施例还提供了一种计算机程序,存储于机器可读存储介质,例如图6中的存储器602,并且当处理器执行该计算机程序时,促使处理器601执行上文中描述的基于容器的Python远程动态调试方法。
[0138] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0139] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。