1.本公开涉及数据导出技术领域,尤其涉及一种数据导出方法、装 置、电子设备和存储介质。
背景技术:2.数据导出是数据管理系统的一个基本要求,基于导出的数据实现 数据可视化操作。
3.现有技术中,数据导出方法是在用户进行导出任务后,服务器进 行同步导出,服务器在导出任务量较小的时候可以正常使用,但是当 进行导出任务量比较大,导出数据比较多时,基于同步导出方法可能 会对服务器造成压力,甚至引起服务器宕机等问题,使得服务器无法 提供正常服务。
4.基于现有技术存在的问题,亟需一种数据导出方法,减小数据导 出过程中出现的问题。
技术实现要素:5.为了解决上述技术问题或者至少部分地解决上述技术问题,本公 开提供了一种数据导出方法、装置、电子设备和存储介质,减少服务 器宕机等问题。
6.第一方面,本公开实施例提供了一种数据导出方法,包括:
7.响应于导出请求,建立导出任务;
8.当线程池中的任务数量小于第一预设任务数量时,将所述导出任 务添加进线程池;
9.基于所述线程池,执行导出任务。
10.可选的,所述当线程池中的任务数量小于第一预设任务数量时, 将所述导出任务添加进线程池,包括:
11.当所述线程池中的任务数量小于第一预设任务数量时,获取所述 线程池可添加的目标任务数量;
12.根据所述导出任务的创建时间,选取与目标任务数量个数相同的 导出任务添加进线程池。
13.可选的,所述方法还包括:
14.当所述线程池中的任务数量大于或等于第一预设任务数量,且所 述导出请求对应的导出任务的任务数量小于或等于第二预设任务数量 时,将所述导出任务添加至等待队列中排队等待。
15.可选的,所述方法还包括:
16.获取所述导出任务的状态信息,并在终端设备展示所述状态信息。
17.可选的,所述基于线程池,执行导出任务时,还包括:
18.响应于对目标导出任务的操作请求,发送中断指令至所述线程池, 其中,所述中
断指令包括所述目标导出任务的目标任务标识信息;
19.根据所述中断指令,从所述线程池中查找所述目标导出任务,并 对所述目标导出任务执行与所述操作请求对应的操作。
20.可选的,所述基于线程池,执行导出任务之前,还包括:
21.获取所述导出任务的任务标识信息和所述导出任务在所述线程池 的线程标识信息;
22.构建所述任务标识信息与所述线程标识信息的关联关系表;
23.所述根据所述中断指令,从所述线程池中查找所述目标导出任务, 并对所述目标导出任务执行与所述操作请求对应的操作,包括:
24.根据所述中断指令中包括的所述目标导出任务的目标任务标识信 息,从所述关联关系表中获取与所述目标任务标识信息对应的目标线 程标识信息;
25.基于所述目标线程标识信息从所述线程池中查找所述目标导出任 务,并对所述目标导出任务执行与所述操作请求对应的操作。
26.可选的,所述基于线程池,执行导出任务之前,还包括:
27.获取所述线程池中各导出任务的任务工作量;
28.所述基于线程池,执行导出任务,包括:
29.基于线程池,按照预设检测周期检测所述线程池中各所述导出任 务的任务进程;
30.执行导出任务并返回所述导出任务的任务进程。
31.第二方面,本公开实施例提供一种数据导出装置,包括:
32.导出任务建立模块,用于响应于导出请求,建立导出任务;
33.任务添加模块,用于当线程池中的任务数量小于第一预设任务数 量时,将所述导出任务添加进线程池;
34.导出任务执行模块,用于基于线程池,执行导出任务。
35.第三方面,本公开实施例提供一种电子设备,包括:
36.一个或多个处理器;
37.存储装置,用于存储一个或多个程序,
38.当所述一个或多个程序被所述一个或多个处理器执行,使得所述 一个或多个处理器实现如第一方面中任一所述的方法。
39.第四方面,本公开实施例提供一种计算机存储介质,其上存储有 计算机程序,该程序被处理器执行时实现如第一方面中任一所述的方 法。
40.本公开实施例提供的技术方案与现有技术相比具有如下优点:
41.本公开实施例提供的数据导出方法、装置、电子设备和存储介质, 响应于导出请求,建立导出任务;当线程池中的任务数量小于第一预 设任务数量时,将导出任务添加进线程池;基于线程池,执行导出任 务。即本公开实施例提供的数据导出方法中,在接收到导出请求后, 首先建立导出任务,然后判断线程池中任务数量与第一预设任务数量 的关系,当线程池中任务数量小于第一预设任务数量时,将建立的导 出任务添加到线程池中,基于线程池,执行导出任务,进而实现数据 的导出,由于本公开实施例提供的数据导出方法,仅仅在线程池中的 任务数量小于第一预设任务数量时,执行将导出任务添加进线程池, 因此,当基于导出请求创建的导出任务较多时,可以控制服务器线程 池中执行任务的数量,
让多余任务进行排队,避免线程池中执行任务 的数量过多而造成服务器宕机等问题,保证数据导出效率。
附图说明
42.此处的附图被并入说明书中并构成本说明书的一部分,示出了符 合本公开的实施例,并与说明书一起用于解释本公开的原理。
43.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面 将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而 易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前 提下,还可以根据这些附图获得其他的附图。
44.图1是本公开实施例提供的一种数据导出方法的流程示意图;
45.图2是本公开实施例提供的另一种数据导出方法的流程示意图;
46.图3是本公开实施例提供的又一种数据导出方法的流程示意图;
47.图4是本公开实施例提供的又一种数据导出方法的流程示意图;
48.图5是本公开实施例提供的又一种数据导出装置的结构示意图;
49.图6是本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
50.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将 对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下, 本公开的实施例及实施例中的特征可以相互组合。
51.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但 本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书 中的实施例只是本公开的一部分实施例,而不是全部的实施例。
52.当基于服务器进行数据导出时,当服务器导出任务比较大时,现 有技术基于同步导出的方式会对服务器造成很大的压力,容易造成服 务器宕机等问题,使得服务器无法提供正常服务,进而影响数据导出 任务。
53.基于此,本公开实施例提供一种数据导出方法,包括:响应于用 户在数据管理系统触发的导出请求,建立导出任务;当线程池中的任 务数量小于第一预设任务数量时,将导出任务添加进线程池;基于线 程池,执行导出任务。即本公开实施例提供的数据导出方法中,当用 户在数据管理系统触发的导出请求后,数据管理系统的服务器接收导 出请求,且数据管理系统的服务器在接收到导出请求后,首先建立导 出任务,然后判断线程池中任务数量与第一预设任务数量的关系,当 线程池中任务数量小于第一预设任务数量时,将建立的导出任务添加 到线程池中,基于线程池,执行导出任务,进而实现数据的导出,由 于本公开实施例提供的数据导出方法,仅仅在线程池中的任务数量小 于第一预设任务数量时,执行将导出任务添加进线程池,因此,当基 于导出请求创建的导出任务较多时,可以控制服务器线程池中执行任 务的数量,让多余任务进行排队,避免线程池中执行任务的数量过多 而造成服务器宕机等问题,保证数据导出效率。
54.其中,本公开实施例提供的数据导出方法由电子设备或者电子设 备中的应用程序、网页、公众号等对应的服务器等来执行。电子设备 可以是平板电脑、手机、可穿戴设备、
车载设备、增强现实(augmentedreality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超 级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、 个人数字助理(personaldigital assistant,pda)、智能电视、智慧屏、 高清电视、4k电视、智能音箱、智能投影仪等设备,本公开对电子设 备的具体类型不作任何限制。
55.其中,本公开对电子设备的操作系统的类型不做限定。例如, android系统、linux系统、windows系统、ios系统等。
56.基于前述描述,本公开以实施例将以电子设备为例,结合应用场 景,对本公开提供的数据导出方法进行详细阐述。
57.如图1所示,数据导出方法包括:
58.s10、响应于导出请求,建立导出任务。
59.由于现有技术中,当用户在数据管理系统触发导出请求后,数据 管理系统的服务器会将所有导出请求构建的导出任务添加到线程池中 执行导出任务,数据管理系统的服务器执行导出任务为同步执行,造 成数据管理系统的服务器压力过大。
60.一个任务为一个线程。
61.具体的,当用户在数据管理系统触发导出请求,此时服务器接收 导出请求,并创建导出任务,服务器建立的导出任务可以实现将导出 请求请求导出的数据导出。
62.导出请求包括请求导出的数据。
63.需要说明的是,导出请求可以为同一用户触发的导出请求(导出 请求可以为1个,也可以为多个),也可以为不同用户触发的导出请 求(导出请求可以为1个,也可以为多个),导出请求请求导出的数 据可以相同,也可以为不相同数据,本公开实施例不对此进行具体限 定。
64.s20、当线程池中的任务数量小于第一预设任务数量时,将导出任 务添加进线程池。
65.其中,容纳或管理多个任务的容器即为线程池。
66.通过设置线程池允许同时运行的任务数量,当线程池中的任务数 量小于第一预设任务数量时,此时表明线程池可继续添加导出任务, 此时,可以将导出请求对应的导出任务添加到线程池中,基于线程池, 执行导出任务。
67.具体的,线程池允许同时运行的任务数量可基于数据管理系统所 对应的硬件配置进行估算,如果数据管理系统为4核,则设置线程池 可以同时运行的任务数量设置为4个,避免线程池中导出任务超过数 据管理系统的核数,进而造成线程池中各导出任务出现资源竞争现象, 影响服务器正常运行。
68.可选的,当线程池中的任务数量小于第一预设任务数量时,将导 出任务添加进线程池包括:
69.当线程池中的任务数量小于第一预设任务数量时,获取线程池可 添加的目标任务数量;
70.根据导出任务的创建时间,选取与目标任务数量个数相同的导出 任务添加进线程池。
71.示例性的,当用户在数据管理系统触发10个导出请求,分别为导 出请求1,导出请求2,...,导出请求10,此时,服务器接收导出请求, 对应每一个导出请求创建一个导出任
务,分别为导出任务1,导出任务 2,...,导出任务10。若服务器创建的线程池可以同时执行4个任务数 量,当服务器接收到用户触发的导出请求后,服务器首先获取线程池 中正在执行的任务数量,当线程池正在执行的任务数量小于预设4个 任务数量时,服务器根据接收到的导出请求的顺序,将导出任务添加 到线程池中,例如,若服务器获取的线程池中正在执行的任务数量的3 个时,由于线程池可以同时执行4个任务数量,且线程池中正在执行 的任务数量为3个,则可以确定线程池可添加的目标任务数量的导出 任务为1个,此时服务器根据触发导出请求的顺序,将导出请求靠前 的前1个数量导出请求对应的导出任务添加进线程池中,例如,若导 出请求1为第一个触发的导出请求,因此,将导出请求1对应的导出 任务添加到线程池中。
72.在其他可实施方式中,若服务器获取的线程池中正在执行的任务 数量的1个时,服务器根据触发导出请求的顺序,将导出请求靠前的 前3个数量导出请求对应的导出任务添加进线程池中。
73.s30、基于线程池,执行导出任务。
74.当将导出任务添加进线程池后,基于线程池执行的导出任务,可 以实现将导出请求请求导出的数据导出。
75.需要说明的是,线程池中各导出任务为并行处理过程,即同时执 行各个导出任务。
76.本公开实施例提供的数据导出方法,响应于导出请求,建立导出 任务;当线程池中的任务数量小于第一预设任务数量时,将导出任务 添加进线程池;基于线程池,执行导出任务。即本公开实施例提供的 数据导出方法中,在接收到导出请求后,首先建立导出任务,然后判 断线程池中任务数量与第一预设任务数量的关系,当线程池中任务数 量小于第一预设任务数量时,将建立的导出任务添加到线程池中,基 于线程池,执行导出任务,进而实现数据的导出,由于本公开实施例 提供的数据导出方法,仅仅在线程池中的任务数量小于第一预设任务 数量时,执行将导出任务添加进线程池,因此,当基于导出请求创建 的导出任务较多时,可以控制服务器线程池中执行任务的数量,让多 余任务进行排队,避免线程池中执行任务的数量过多而造成服务器宕 机等问题,保证数据导出效率。
77.作为一种可实施方式,当线程池中的任务数量大于或等于第一预 设任务数量,且导出请求对应的导出任务的任务数量小于或等于第二 预设任务数量时,将导出任务添加至等待队列中排队等待。
78.具体的,线程池允许同时运行的任务数量可基于数据管理系统所 对应的硬件配置进行估算,此外,也可以基于数据管理系统所对应的 硬件配置估算可添加等待队列中的任务数量。当线程池中的任务数量 大于或等于第一预设任务数量,此时表明线程池中导出任务的任务数 量已经满足服务器要求,因此无法将导出请求对应的导出任务添加到 线程池中,为保证导出任务可以正常进行,通过判断导出请求对应的 导出任务的数量是否满足第二预设任务数量,当导出请求对应的导出 任务的任务数量小于或等于第二预设任务数量时,可以将导出任务添 加到等待队列中排队等待,当线程池中执行导出任务完成后,将等待 队列中的导出任务添加至线程池中,执行导出任务。
79.图2是本公开实施例提供的另一种数据导出方法的流程示意图, 本公开实施例是在上述实施例的基础上,如图2所示,当执行步骤s30 时,可以同步执行如下步骤:
80.s60、响应于对目标导出任务的操作请求,发送中断指令至线程池。
81.其中,中断指令包括目标导出任务的目标任务标识信息。
82.操作包括删除或停止等,操作请求包括:删除请求或停止请求等。
83.现有技术导出任务一旦执行无法停止,如果用户触发导出任务后, 发现触发的导出任务操作失误,但是无法删除或停止执行的导出任务, 且对服务器资源造成浪费。而本公开实施例提供的数据导出方法,当 服务器接收导出请求创建导出任务,并在线程池中执行导出任务的过 程中,当用户在数据管理系统触发删除操作或停止操作,服务器接收 用户在数据管理系统触发的删除操作或停止操作,并响应于用户触发 的删除操作或停止请求,发送中断指令至线程池。
84.具体的,用户在数据管理系统触发停止操作,基于用户在数据管 理系统触发停止操作对应的导出任务,从线程池中查找到该导出任务, 并给线程池发送中断指令,线程池收到中断指令后停止导出任务的。
85.s70、根据中断指令,从线程池中查找目标导出任务,并对目标导 出任务执行与操作请求对应的操作。
86.服务器基于接收到的中断指令,基于中断指令,从线程池中查找 与中断指令对应的目标导出任务,并对目标导出任务执行与操作请求 对应的操作。
87.当用户在数据管理系统触发停止操作后,用户触发停止操作对应 的导出任务为目标导出任务,服务器可基于停止操作对应的导出任务 的标识信息确定用户触发的目标导出任务,然后基于任务标识信息与 线程标识信息的对应关系,从线程池中查找到目标导出任务,并对目 标导出任务执行停止操作,实现线程池中导出任务的停止。
88.本公开实施例提供的数据导出方法,响应于对目标导出任务的操 作请求,发送中断指令至线程池,根据中断指令,从线程池中查找目 标导出任务,并对目标导出任务执行与操作请求对应的操作,实现在 任务导出过程中,当用户在数据管理系统触发终止操作,服务器接收 用户在数据管理系统触发的终止操作,并响应于用户触发的终止请求, 发送中断指令至线程池,基于中断指令对线程池中导出任务的操作。
89.图3是本公开实施例提供的又一种数据导出方法的流程示意图, 本公开实施例是在图2对应的实施例的基础上,如图3所示,步骤s60 之前还包括:
90.s40、获取导出任务的任务标识信息和导出任务在线程池的线程标 识信息。
91.为保证服务器在获取到中断指令后,可以基于中断指令从线程池 中查找到目标导出任务,因此,服务器在建立导出任务时,每一个导 出任务对应一个任务标识信息,当服务器判断线程池中任务数量小于 第一预设任务数量时,服务器将导出任务添加进线程池的过程中,会 对应获取每一个添加进线程池的导出任务在线程池的线程标识信息。
92.示例性的,当用户在数据管理系统触发10个导出请求,分别为导 出请求1,导出请求2,...,导出请求10,此时,服务器接收导出请求, 对应每一个导出请求创建一个导出任务,分别为导出任务1,导出任务 2,...,导出任务10,且每一个导出任务对应一个任务标识信息,分别 为,导出任务1:id10,导出任务1:id12,...,导出任务10:id110。 若服务器创建的线程池可以同时执行4个任务数量,当服务器接收到 用户触发的导出请求后,服务器首先获取线程池中正在执行的任务数 量,当线程池正在执行的任务数量小于预设4个任务数量时,服务器 将导出请求1对应的导出任务添加到线程池中,此时服务器接收线程 池返回
的导出请求1在线程池中的线程标识信息,示例性的,导出请 求1在线程池的线程标识信息为id21,此时,服务器接收到线程池返 回的导出请求1在线程池的线程标识信息id21。
93.s50、构建任务标识信息与线程标识信息的关联关系表。
94.服务器在确定导出请求的任务标识信息以及线程标识信息后,构 建任务标识信息与线程标识信息的关联关系表,示例性的,构建的导 出请求1的关联关系表为:
95.表一关联关系表
[0096] 任务标识信息线程标识信息导出请求1id11id21
[0097]
当数据导出方法包括步骤s40和步骤s50时,步骤s70的一种可 实现方式包括:
[0098]
s71、根据中断指令中包括的目标导出任务的目标任务标识信息, 从关联关系表中获取与目标任务标识信息对应的目标线程标识信息。
[0099]
当用户在数据管理系统触发终止操作后,用户触发终止操作对应 的导出任务为目标导出任务,此时服务器可基于中断指令中包括的任 务标识信息确定用户触发终止操作对应的导出任务,例如,若中断指 令中包括的任务标识信息为id11(任务标识信息id11为目标任务标识 信息),则可以确定用户在数据管理系统触发终止操作对应的导出任 务为导出任务1(导出任务1为目标导出任务),基于中断指令中包括 的目标任务标识信息,从关联关系表中获取与目标任务标识信息对应 的目标线程标识信息,然后从线程池中查找到目标导出任务,并对目 标导出任务执行终止操作,实现线程池中导出任务的终止。
[0100]
s72、基于目标线程标识信息从线程池中查找目标导出任务,并对 目标导出任务执行与操作请求对应的操作。
[0101]
当服务器基于目标线程标识信息从线程池中查找到目标导出任务 后,服务器发送中断指令至线程池的目标导出任务,实现线程池中的 目标导出任务执行与操作请求对应的操作。
[0102]
需要说明的是,由于操作请求包括删除请求或停止请求等,作为 一种可实施方式,设置发送至服务器的中断指令中包括与操作请求对 应的操作标识信息,使得在从线程池中查找目标导出任务后,对目标 导出任务执行与操作请求对应的操作的过程中可以基于操作请求中包 括的操作标识信息确定对目标导出任务执行的操作。
[0103]
图4是本公开实施例提供的又一种数据导出方法的流程示意图, 本公开实施例是在上述实施例的基础上,如图4所示,步骤s30之前 还包括:
[0104]
s201、获取线程池中各导出任务的任务工作量。
[0105]
为了实现在数据管理系统给用户展示导出任务的任务进程,需要 在导出任务执行前查询或者设置线程池中导出任务的任务工作量,当 导出任务执行时,每当完成一部分就更新导出任务的进度,示例性的, 完成任务工作量/任务工作量。以导出10万用户为例,即对应线程池中 某一个导出任务的任务工作量为10万用户数据,首先分页拉取需要导 出的用户数据,每当拉取并导出至文件完成一页数据(每页数据1万 用户数据),在计算一次导出任务的任务进程(1/10=10%)并更新数 据库中导出任务的任务进程,用户可以看到导出任务的任务进程为完 成10%。
[0106]
执行中的任务处理执行中,并且执行中的任务会实时更新数据库 的任务进程百分比,用户可以直观看到;当任务完成后,数据库的任 务状态为完成,用户可以看到任务完
成并进行下载等操作。
[0107]
当数据导出方法包括步骤s201时,步骤s30的一种可实现方式包 括:
[0108]
s31、基于线程池,按照预设检测周期检测线程池中各导出任务的 任务进程。
[0109]
通过按照预设检测周期检测线程池中各导出任务的任务进程,保 证获取到线程中各导出任务的任务进程的准确性。
[0110]
具体的,每一次循环需检测线程池中导出任务是否有删除请求或 停止请求,如果有则删除导出任务或停止导出任务,若删除导出任务, 线程池中会剔除当前导出任务,同时由于该导出任务为人为终止,此 导出任务的任务进程为完成,若停止导出任务,线程池会保留当前导 出任务,此时导出任务的任务进程为异常。
[0111]
此外,每一次循环检测线程池中导出任务是否有完成任务,如果 有导出完成任务则更改导出任务进行为完成,任务完成为100%,线程 池会踢出当前任务,同时更新当前任务为完成,此任务完成,用户可 下载文件。每一次循环需更新任务进度同时将数据写入需要导出的文 件中。
[0112]
s32、执行导出任务并返回导出任务的任务进程。
[0113]
在执行导出任务并返回导出任务的任务进程后,可实现在终端设 备展示任务进程。
[0114]
作为一种可实施方式,终端设备展示给用户的任务界面进行定时 刷新,将最新的任务进程自动、实时的展示给用户。通过在终端设备 展示任务进程,可提高用户体验度和视觉感官。
[0115]
在其它可实施方式中,当数据管理系统因其他原因导致的系统重 启时,自动将系统异常之前的任务全部更新为执行失败,可以提醒用 户重新提交任务,用户可以及时获取到任务异常的信息。
[0116]
作为一种可实施方式,在执行导出任务的过程中,获取导出任务 的状态信息,并在终端设备展示状态信息。
[0117]
导出任务的状态信息包括导出任务的任务进程,导出任务完成状 态信息、导出任务异常状态信息,其中,导出任务完成状态信息是在 删除操作或完成导出任务时对应的状态信息,导出任务异常状态信息 是在停止操作时对应的状态信息。
[0118]
图5是本公开实施例提供的一种数据导出装置的结构示意图,如 图5所示,数据导出装置包括:
[0119]
导出任务建立模块510,用于响应于导出请求,建立导出任务;
[0120]
任务添加模块520,用于当线程池中的任务数量小于第一预设任务 数量时,将导出任务添加进线程池;
[0121]
导出任务执行模块530,用于基于线程池,执行导出任务。
[0122]
本公开实施例提供的数据导出装置,导出任务建立模块响应于导 出请求,建立导出任务;任务添加模块当线程池中的任务数量小于第 一预设任务数量时,将导出任务添加进线程池;导出任务执行模块基 于线程池,执行导出任务。即本公开实施例提供的数据导出方法中, 在接收到导出请求后,首先建立导出任务,然后判断线程池中任务数 量与第一预设任务数量的关系,当线程池中任务数量小于第一预设任 务数量时,将建立的导出任务添加到线程池中,基于线程池,执行导 出任务,进而实现数据的导出,由于本公开实施例提
供的数据导出方 法,仅仅在线程池中的任务数量小于第一预设任务数量时,执行将导 出任务添加进线程池,因此,当基于导出请求创建的导出任务较多时, 可以控制服务器线程池中执行任务的数量,让多余任务进行排队,避 免线程池中执行任务的数量过多而造成服务器宕机等问题,保证数据 导出效率。
[0123]
可选的,任务添加模块具体用于:
[0124]
当线程池中的任务数量小于第一预设任务数量时,获取线程池可 添加的目标任务数量;
[0125]
根据导出任务的创建时间,选取与目标任务数量个数相同的导出 任务添加进线程池。
[0126]
可选的,数据导出装置还包括:
[0127]
任务等待模块,用于当线程池中的任务数量大于或等于第一预设 任务数量,且导出请求对应的导出任务的任务数量小于或等于第二预 设任务数量时,将导出任务添加至等待队列中排队等待。
[0128]
可选的,数据导出装置还包括:
[0129]
状态信息显示模块,用于获取导出任务的状态信息,并在终端设 备展示状态信息。
[0130]
可选的,数据导出装置还包括:
[0131]
终端指令发送模块,用于响应于对目标导出任务的操作请求,发 送中断指令至线程池,其中,中断指令包括目标导出任务的目标任务 标识信息;
[0132]
操作模块,用于根据中断指令,从线程池中查找目标导出任务, 并对目标导出任务执行与操作请求对应的操作。
[0133]
可选的,数据导出装置还包括:
[0134]
标识信息获取模块,用于获取导出任务的任务标识信息和导出任 务在线程池的线程标识信息;
[0135]
关联关系表构建模块,用于构建任务标识信息与线程标识信息的 关联关系表;
[0136]
操作模块的一种具体可实现方式包括:
[0137]
根据中断指令中包括的目标导出任务的目标任务标识信息,从关 联关系表中获取与目标任务标识信息对应的目标线程标识信息;
[0138]
基于目标线程标识信息从线程池中查找目标导出任务,并对目标 导出任务执行与操作请求对应的操作。
[0139]
可选的,数据导出装置还包括:
[0140]
获取线程池中各导出任务的任务工作量;
[0141]
导出任务执行模块一种具体可实现方式包括:
[0142]
基于线程池,按照预设检测周期检测线程池中各导出任务的任务 进程;
[0143]
执行导出任务并返回导出任务的任务进程。
[0144]
本发明实施例所提供的装置可执行本发明任意实施例所提供的方 法,具备执行方法相应的功能模块和有益效果。
[0145]
值得注意的是,上述装置的实施例中,所包括的各个单元和模块 只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够 实现相应的功能即可;另外,各功能单
元的具体名称也只是为了便于 相互区分,并不用于限制本发明的保护范围。
[0146]
图6是本公开实施例提供的一种电子设备的结构示意图,如图6 所示,该电子设备包括处理器610、存储器620、输入装置630和输出 装置640;计算机设备中处理器610的数量可以是一个或多个,图6 中以一个处理器610为例;电子设备中的处理器610、存储器620、输 入装置630和输出装置640可以通过总线或其他方式连接,图6中以 通过总线连接为例。
[0147]
存储器620作为一种计算机可读存储介质,可用于存储软件程序、 计算机可执行程序以及模块,如本发明实施例中方法对应的程序指令/ 模块。处理器610通过运行存储在存储器620中的软件程序、指令以 及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现 本发明实施例所提供的方法。
[0148]
存储器620可主要包括存储程序区和存储数据区,其中,存储程 序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可 存储根据终端的使用所创建的数据等。此外,存储器620可以包括高 速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘 存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中, 存储器620可进一步包括相对于处理器610远程设置的存储器,这些 远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但 不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0149]
输入装置630可用于接收输入的数字或字符信息,以及产生与电 子设备的用户设置以及功能控制有关的键信号输入,可以包括键盘、 鼠标等。输出装置640可包括显示屏等显示设备。
[0150]
本公开实施例还提供了一种包含计算机可执行指令的存储介质, 所述计算机可执行指令在由计算机处理器执行时用于实现本发明实施 例所提供的方法:
[0151]
响应于导出请求,建立导出任务;
[0152]
当线程池中的任务数量小于第一预设任务数量时,将导出任务添 加进线程池;
[0153]
基于线程池,执行导出任务。
[0154]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储 介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行 本发明任意实施例所提供的方法中的相关操作。
[0155]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地 了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通 过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解, 本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软 件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存 储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、 随机存取存储器(random access memory,ram)、闪存(flash)、 硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人 计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方 法。
[0156]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关 系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来, 而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系 或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在 涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品 或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素, 或者是还包括为这种过程、方法、物品
或者设备所固有的要素。在没 有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排 除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同 要素。
[0157]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理 解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说 将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精 神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限 制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖 特点相一致的最宽的范围。
技术特征:1.一种数据导出方法,其特征在于,包括:响应于导出请求,建立导出任务;当线程池中的任务数量小于第一预设任务数量时,将所述导出任务添加进线程池;基于所述线程池,执行导出任务。2.根据权利要求1所述的方法,其特征在于,所述当线程池中的任务数量小于第一预设任务数量时,将所述导出任务添加进线程池,包括:当所述线程池中的任务数量小于第一预设任务数量时,获取所述线程池可添加的目标任务数量;根据所述导出任务的创建时间,选取与目标任务数量个数相同的导出任务添加进线程池。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述线程池中的任务数量大于或等于第一预设任务数量,且所述导出请求对应的导出任务的任务数量小于或等于第二预设任务数量时,将所述导出任务添加至等待队列中排队等待。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述导出任务的状态信息,并在终端设备展示所述状态信息。5.根据权利要求1所述的方法,其特征在于,所述基于线程池,执行导出任务时,还包括:响应于对目标导出任务的操作请求,发送中断指令至所述线程池,其中,所述中断指令包括所述目标导出任务的目标任务标识信息;根据所述中断指令,从所述线程池中查找所述目标导出任务,并对所述目标导出任务执行与所述操作请求对应的操作。6.根据权利要求5所述的方法,其特征在于,所述基于线程池,执行导出任务之前,还包括:获取所述导出任务的任务标识信息和所述导出任务在所述线程池的线程标识信息;构建所述任务标识信息与所述线程标识信息的关联关系表;所述根据所述中断指令,从所述线程池中查找所述目标导出任务,并对所述目标导出任务执行与所述操作请求对应的操作,包括:根据所述中断指令中包括的所述目标导出任务的目标任务标识信息,从所述关联关系表中获取与所述目标任务标识信息对应的目标线程标识信息;基于所述目标线程标识信息从所述线程池中查找所述目标导出任务,并对所述目标导出任务执行与所述操作请求对应的操作。7.根据权利要求1所述的方法,其特征在于,所述基于线程池,执行导出任务之前,还包括:获取所述线程池中各导出任务的任务工作量;所述基于线程池,执行导出任务,包括:基于线程池,按照预设检测周期检测所述线程池中各所述导出任务的任务进程;执行导出任务并返回所述导出任务的任务进程。8.一种数据导出装置,其特征在于,包括:
导出任务建立模块,用于响应于导出请求,建立导出任务;任务添加模块,用于当线程池中的任务数量小于第一预设任务数量时,将所述导出任务添加进线程池;导出任务执行模块,用于基于线程池,执行导出任务。9.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1~7中任一所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~7中任一所述的方法。
技术总结本公开涉及一种数据导出方法、装置、电子设备和存储介质,包括:响应于导出请求,建立导出任务;当线程池中的任务数量小于第一预设任务数量时,将导出任务添加进线程池;基于线程池,执行导出任务,当基于导出请求创建的导出任务较多时,可以控制服务器线程池中执行任务的数量,让多余任务进行排队,避免线程池中执行任务的数量过多而造成服务器宕机等问题,保证数据导出效率。证数据导出效率。证数据导出效率。
技术研发人员:林皓 党艳平 王正林 杨泳
受保护的技术使用者:北信源系统集成有限公司
技术研发日:2022.01.10
技术公布日:2022/7/5