一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据采集方法、装置、计算机存储介质及系统与流程

2022-11-23 07:30:15 来源:中国专利 TAG:


1.本技术涉及互联网技术领域,尤其涉及一种数据采集方法、装置、计算机存储介质及系统。


背景技术:

2.随着大数据时代的到来,对于产品和系统的部署,集群和分布式架构的方式被众多企业采用,而产品的运营维护要求需要企业对集群设备及分布式的性能进行监控和管理,以便及时发现错误进行维护,保证产品的正常运营,避免损失。
3.相关技术中,目前采用基于celery调度框架来对大量消息进行处理实现数据采集,这时候需要启动worker、beat、rabbitmq等多个服务,服务管理较为繁琐,且导致系统资源的占用率高,降低了系统性能。


技术实现要素:

4.本技术提供了一种数据采集方法、装置、计算机存储介质及系统,可以实现仅开启单个服务即可完成数据采集任务,从而能够减少开启的服务数量,节省系统资源,并且降低系统资源的占用率,进而提升系统性能。
5.本技术的技术方案是这样实现的:
6.第一方面,本技术实施例提供了一种数据采集方法,该方法应用于用户设备,所述用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中,所述方法包括:
7.确定待执行的数据采集任务;
8.在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;
9.通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。
10.在一些实施例中,所述确定待执行的数据采集任务,包括:
11.获取系统信息;
12.根据所述系统信息,确定当前运行的操作系统;
13.将所述操作系统对应的数据采集任务确定为待执行的数据采集任务。
14.在一些实施例中,在所述执行所述数据采集任务,得到任务执行结果之后,所述方法还包括:
15.将所述任务执行结果以预设形式序列化存储至缓存队列;
16.在所述缓存队列中有数据存在的情况下,通过所述nanomsg模块从所述缓存队列中直接读取所述任务执行结果。
17.在一些实施例中,所述方法还包括:
18.基于twisted框架,开启等待事件的reactor模式;
19.对所述apscheduler模块进行实例化操作,得到twisted框架中的第一事件;
20.通过预设库调用所述nanomsg模块的底层接口,并对所述nanomsg模块进行实例化,得到twisted框架中的第二事件;
21.基于所述第一事件和所述第二事件,使得所述apscheduler模块和所述nanomsg模块处于同一服务进程中。
22.在一些实施例中,所述方法还包括:
23.当所述apscheduler模块和所述nanomsg模块所属的同一服务进程停止时,检测所述数据采集任务的输入输出io文件是否关闭;
24.若所述io文件未关闭,则关闭所述io文件。
25.在一些实施例中,所述方法还包括:
26.当所述nanomsg模块与所述服务设备建立通信连接时,通过所述nanomsg模块接收所述服务设备发送的任务配置信息;
27.从所述任务配置信息中,获取待调整任务的任务名和任务参数;
28.根据所述任务名和所述任务参数,对所述待调整任务进行任务调整操作;其中,所述任务调整操作包括下述中的至少一项:移除任务、新增任务、关闭任务、暂停任务和修改任务周期。
29.在一些实施例中,所述方法还包括:
30.当所述nanomsg模块与所述服务设备未建立通信连接时,在通过所述nanomsg模块对所述任务执行结果进行消息处理后,将处理后的目标数据进行丢弃。
31.第二方面,本技术实施例提供了一种数据采集装置,应用于用户设备,所述用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中;所述数据采集装置包括确定单元、执行单元和发送单元;其中,
32.所述确定单元,配置为确定待执行的数据采集任务;
33.所述执行单元,配置为在通过apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;
34.所述发送单元,配置为通过nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。
35.第三方面,本技术实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的数据采集方法。
36.第四方面,本技术实施例提供了一种数据采集系统,该数据采集系统至少包括用户设备,该用户设备包括存储器和处理器,其中,
37.所述存储器,用于存储能够在所述处理器上运行的计算机程序;
38.所述处理器,用于在运行所述计算机程序时,执行如第一方面中任一项所述的数据采集方法。
39.本技术实施例所提供的一种数据采集方法、装置、计算机存储介质及系统,该方法应用于用户设备,用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中。通过确定待执行的数据采集任务;在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行
结果;通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。这样,通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务进程中,这时候仅需要开启单个服务即可完成数据采集任务,从而能够减少开启的服务数量,节省系统资源,并且还能够降低系统资源的占用率,进而提升系统性能。
附图说明
40.图1为本技术实施例提供的一种数据采集方法的流程示意图;
41.图2为本技术实施例提供的另一种数据采集方法的流程示意图;
42.图3a为本技术实施例提供的一种数据采集系统的组成结构示意图;
43.图3b为本技术实施例提供的一种数据采集方法的应用框架示意图
44.图4为本技术实施例提供的一种事件循环过程的流程示意图;
45.图5为本技术实施例提供的一种数据采集装置的组成结构示意图;
46.图6为本技术实施例提供的一种用户设备的硬件结构示意图;
47.图7为本技术实施例提供的另一种数据采集系统的组成结构示意图。
具体实施方式
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
49.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
50.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
51.需要指出,本技术实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
52.随着互联网的不断发展,对于产品和系统的部署,集群和分布式架构的方式被众多企业采用,而产品的运营维护要求需要企业对集群设备及分布式的性能进行监控和管理,以便及时发现错误进行维护,保证产品的正常运营,避免损失。
53.在相关技术中,目前提供了一种基于celery调度框架的数据采集方法。其中,celery是一个基于python开发的分布式异步消息任务队列,通过它可以实现任务的异步处理,对大量消息进行处理,是一个专注于实时处理的消息队列。该方案使用celery处理定时和周期性异步任务来进行数据收集,消息队列为rabbitmq,通过rabbitmq的交换器将接收的消息路由给服务器中的队列进行存储输出。但是这种方案主要使用了celery调度框架以及rabbitmq消息队列,celery启动分为worker和beat两个服务,再加个rabbitmq服务,导致在进行数据采集时,启动服务的数量较多,管理较繁琐,且系统资源占用率较高,性能较低。
54.在本技术实施例中,考虑到众多应用场景的下采集数据具有复杂性和不确定性,亟需提供一种可控的任务调度且主动推送数据的方式,以便能够统一管理、调度需要进行采集数据的任务。
55.基于此,本技术实施例提供了一种数据采集方法,该方法应用于用户设备,所述用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中,该方法的基本思想是:确定待执行的数据采集任务;在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。这样,通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务进程中,这时候仅需要开启单个服务即可完成数据采集任务,从而能够减少开启的服务数量,节省系统资源,并且降低系统资源的占用率,进而提升系统性能。
56.下面将结合附图对本技术各实施例进行详细说明。
57.本技术的一实施例中,参见图1,其示出了本技术实施例提供的一种数据采集方法的流程示意图。如图1所示,该方法可以包括:
58.s101、确定待执行的数据采集任务。
59.需要说明的是,本技术实施例所提供的数据采集方法可以应用于用户设备,该用户设备可以实现本技术实施例所述的数据采集方法。或者,本技术实施例所提供的数据采集方法也可以应用于数据采集装置,该数据采集装置可以集成在用户设备中,使得该用户设备可以实现本技术实施例所述的数据采集方法。这里,用户设备可以是诸如计算机、智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personal digital assistant,pda)、导航装置等等,本技术实施例对此不作具体限定。
60.还需要说明的是,对于用户设备而言,该用户设备可以包括apscheduler模块和nanomsg模块,且apscheduler模块和nanomsg模块集成在twisted框架中。这里,通过apscheduler模块调度需要执行的各数据采集任务。
61.由于不同的操作系统版本的区别,不同的操作系统的外壳(shell,也叫命令行解释器)不同,其内置的系统命令也不相同,在数据采集任务中,对于不同的操作系统会调用其相应的系统命令。故在对各数据采集任务进行调度之前,需要通过前置任务对当前运行的操作系统进行确定。因此,在一些实施例中,所述确定待执行的数据采集任务,可以包括:
62.获取系统信息;
63.根据所述系统信息,确定当前运行的操作系统;
64.将所述操作系统对应的数据采集任务确定为待执行的数据采集任务。
65.需要说明的是,前置任务即是在通过apscheduler对数据采集任务进行调度之前执行的任务,通过前置任务获取当前的系统信息,进而根据系统信息对当前运行的操作系统进行确认,例如:操作系统可以为windows、linux等操作系统;然后根据当前运行的操作系统选择与当前运行的操作系统所对应的数据采集任务,并确定为待执行的数据采集任务。
66.也就是说,可以通过python的os模块来调用系统命令并获取系统信息,然后根据系统信息确定出当前运行的操作系统,例如是windows操作系统,进而确定出与windows操作系统对应的数据采集任务。
67.s102、在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果。
68.需要说明的是,本技术实施例提供的数据采集方法是基于twisted框架来实现的。twisted是用python实现的基于事件驱动的网络引擎框架,是python中一个强大的异步io库。它实现了设计模式中的反应堆(reactor)模式。twisted中的twisted.application.service.mutilservice类是一个服务容器,将apscheduler模块和nanomsg模块当作其子服务,即通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务进程中,这样,在进行数据采集时,仅需开启这一个服务,就能够实现数据采集。
69.还需要说明的是,advanced python scheduler(apscheduler)即apscheduler模块是一个轻量级的python定时任务调度框架(python库),它可以在指定的时间规则执行指定的作业。apscheduler主要包括以下组件,触发器(triggers)包含调度逻辑,描述一个任务何时被触发。作业存储器(job stores)指定了作业被存放的位置,默认情况下作业保存在内存,也可将作业保存在各种数据库中,当作业被存放在数据库中时,会被序列化,当被重新加载时会反序列化。执行器(executors)可以将指定的作业(调用函数)提交到线程池或进程池中运行,当任务完成时,执行器通知调度器触发相应的事件。调度器(schedulers)即任务调度器,属于控制角色,通过它配置作业存储器、执行器和触发器,添加、修改和删除任务。nanomsg模块(也可以称为“nanomsg消息队列”、“nanomsg”等)是一个使用c语言编写的socket通讯库,可以适用于多种操作系统,通过不同的协议能够实现一对一、一对多、多对多等方式的数据传送。
70.进一步地,由于本技术实施例需要将apscheduler模块及nanomsg模块放到同一进程中,而且是通过事件驱动网络的twisted框架实现的。因此,在一些实施例中,所述方法还可以包括:
71.基于twisted框架,开启等待事件的reactor模式;
72.对所述apscheduler模块进行实例化操作,得到twisted框架中的第一事件;
73.通过预设库调用所述nanomsg模块的底层接口,并对所述nanomsg模块进行实例化,得到twisted框架中的第二事件;
74.基于所述第一事件和所述第二事件,使得所述apscheduler模块和所述nanomsg模块处于同一服务进程中。
75.需要说明的是,在本技术实施例中,通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务中,可以为:twisted首先开启等待时间的循环模式,即reactor模式,等待事件进入,具体地,reactor模式全称为反应器设计模式(reactor pattern),是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。然后对apsscheduler模块进行实例化操作,具体地,由于本技术实施例的数据采集方法是基于twisted框架来实现的,在此种应用场景下,在配置调度器时,选择的调度器为twistedscheduler。通过对apscheduler模块的调度器twistedscheduler进行实例化scheduler=twistedscheduler(),将apscheduler模块作为一个事件加入twisted框架中。实例化之后,apschedule模块就可以通过add_job,remove_job,shutdown,pause,modify等方法进行添加任务、移除任务、关闭任务、暂停任务或者修改任务等操作。这里,可以将apscheduler模块作为twisted框架中的第一事件。
76.还需要说明的是,由于nanomsg模块即nanomsg消息队列是由c语言编写的,因此需要通过twisted框架中的一个预设库来调用nanomsg模块的底层接口,实现nanomsg模块的功能,预设库可以为pynng库,其是一个python库,在这里用于实现nanomsg模块的功能。同时也对nanomsg模块进行实例化,然后也作为一个事件加入twisted框架中。这里,可以将nanomsg模块作为twisted框架中的第二事件。这样,基于第一事件和第二事件,能够使得apscheduler模块和nanomsg模块处于同一服务进程中。同时,还可以为nanomsg模块绑定一个端口,用以与外部设备进行连接通信、数据传输等。
77.另外,在通过apscheduler模块对数据采集任务进行调度时,还需要根据任务的任务名、周期来进行调度。在调度数据采集任务时,可以是从用户设备的任务(tasks)模块中调度各数据采集任务。这里,tasks模块可以是需要执行的任务包,其中除了包含有各种数据采集任务之外,还包含有其它任务,如前置任务、后置任务等。前置任务即在调度数据采集任务之前对系统进行检查确认当前运行的操作系统,并选择出与当前操作系统对应的数据采集任务;后置任务一般是在接收到服务关闭和退出的信号时执行,确保io文件正常关闭,或者在接收到服务设备下发的任务配置信息时,对数据采集任务的配置文件进行更新。
78.在这里,由于此时只需要调度数据采集任务,因此只需要通过scheduler.add_job(《任务名》,《周期》)的方法,将选择的数据采集任务的任务函数添加到调度任务。获取周期可以通过以下方式:例如,通过数据采集任务的配置文件获得,如果数据采集任务的配置文件中没有与周期相关的参数;就将预设默认值设置为周期,预设默认值可以是在编写代码时设置的固定值;还可以通过服务设备发送相应的周期数据进行配置。
79.还需要说明的是,本技术实施例提供的数据采集方法可以异步执行多个数据采集任务。因此,数据采集任务的数量可以为一个或者多个。
80.还需要说明的是,本技术实施例提供的数据采集方法可以为产品运营、设备性能监控等提供数据依据,因此采集的数据是多样且灵活的。具体地,在一些实施例中,所述数据采集任务可以包括下述中的至少一项:
81.硬件信息采集任务,中央处理器cpu使用率采集任务,内存使用率采集任务,磁盘使用率采集任务,程序运行状态采集任务,日志分析与错误信息采集任务。
82.在本技术实施例中,数据采集任务可以通过设定的周期(即前述中获取到的周期)运行,硬件信息采集任务即采集硬件如处理器、内存、硬盘、网卡等的信息;通过cpu使用率采集任务、内存使用率采集任务以及磁盘使用率采集任务则可以实现对cpu、内存以及磁盘使用率的监控,cpu使用率采集任务、内存使用率采集任务以及磁盘使用率采集任务可以分为三个任务执行或者分为两个任务执行或者作为一个整体任务执行,结合实际任务的配置和需求进行,本技术实施例对此不作具体限定;程序运行状态采集任务即可以对指定程序的运行状态进行监控,指定程序可以为一个或者多个,当指定程序为多个时可以分多个任务执行,也可以作为一个整体任务执行,结合实际任务的配置和需求进行,本技术实施例对此不作具体限定;日志分析与错误信息采集任务即对操作系统和各程序进行日志分析,如果日志中有错误就提取出错误信息。
83.需要说明的是,在通过apscheduler模块将数据采集任务进行调度后,当数据采集任务加载完成之后,对于每一个数据采集任务,当达到其指定的周期之后,就会开始执行该数据采集任务,采集到的数据即任务执行结果。
84.s103、通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。
85.需要说明的是,在本技术实施例中,nanomsg模块可以为用户设备和通信设备之间提供数据传输、连接通信等功能。在得到任务执行结果之后,就可以提供nanomsg模块对任务执行结果进行消息处理,并将处理后的目标数据发送给服务设备。
86.还需要说明的是,由于apscheduler模块和nanomsg模块通过twisted框架集成在了同一服务进程中,因此两者分别作为同一服务进程中的两个线程,可以通过缓存队列的缓存机制实现来线程共享数据。因此,在一些实施例中,在所述执行所述数据采集任务,得到任务执行结果之后,所述方法还包括:
87.将所述任务执行结果以预设形式序列化存储至缓存队列;
88.在所述缓存队列中有数据存在的情况下,通过所述nanomsg模块从所述缓存队列中直接读取所述任务执行结果。
89.在一种具体的实施例中,所述预设形式可以为键值对形式。
90.需要说明的是,缓存队列可以为queue标准库,通过它可以实现线程之间的数据共享。这里,在执行数据采集任务并得到任务执行结果之后,首先将任务执行结果以预设形式进行序列化处理存储在缓存队列中。优选地,预设形式为键值对形式,将任务运行结果以键值对的形式序列化为json格式存储在queue标准库中。也可以以其它形式对任务执行结果进行序列化后存储到缓存队列中,例如将任务执行结果序列化为xml格式,本技术实施例对此不作具体限定。
91.在将任务执行结果存储到缓存队列之后,缓存队列中就有了数据(即序列化之后的任务执行结果)存在。在缓存队列中有数据存在的情况下,就可以通过nanomsg模块从缓存队列中读取任务执行结果。还需要说明的是,nanomsg模块从缓存队列中读取任务执行结果之后,由于任务执行结果已经被“取”走,因此缓存队列中将不会再保存已经被读取的任务执行结果。
92.进一步地,在nanomsg模块从缓存队列中读取任务执行结果之后,还需要分为两种情况进行描述。
93.针对第一种情况,如前所述,可以为nanomsg模块绑定一个端口,用以与外部设备进行连接通信、数据传输等。外部设备可以是例如需要接收数据的服务设备,这里,服务设备与nanomsg模块建立通信连接具体方式可以为:服务设备通过用户设备的网际互联协议(internet protocol,ip)地址和绑定的端口号及pair协议连接到nanomsg模块,确保服务设备与用户设备通过nanomsg模块通信。pair协议是一种“一对一模式”,也就是端对端双向通信模式。当nanomsg模块通过端口与服务设备建立通信连接后,用户设备就可以通过nanomsg模块将目标数据发送给服务设备。服务设备接收到目标数据后结合实际需求自行处理,例如服务设备接收到日志的错误信息后可以进行告警等,但是这已经和数据采集任务无关。
94.针对第二种情况,如果没有外部设备如服务设备通过端口与nanomsg建立连接,那么用户设备是无法通过nanomsg模块与外部设备进行通信的。因此,在一些实施例中,该方法还可以包括:
95.当所述nanomsg模块与所述服务设备未建立通信连接时,在通过所述nanomsg模块
对所述任务执行结果进行消息处理后,将处理后的目标数据进行丢弃。
96.需要说明的是,如果服务设备和nanomsg模块之间没有建立通信连接,那么它们之间是无法进行通信以及数据传输等。此时,nanomsg模块也会从缓存队列中获取任务执行结果,并进行处理后将其进行丢弃,这样就能够保证当用户设备与服务设备通过nanomsg模块建立通信连接时,nanomsg模块发送给服务设备的数据是实时的。
97.在执行数据采集任务的过程中,有时需要增加新的数据采集任务去执行;或者需要对某些数据采集任务进行修改,(例如修改其执行周期);或者需要暂停某个数据采集任务;或者某个数据采集任务已经不会再执行了,则需要删除某个数据采集任务;或者某个数据采集任务周期过长还未被执行,此时需要执行该数据采集任务。在相关技术中,如果要对数据采集任务中的部分任务进行移除、新增、关闭、暂停或修改任务周期等操作,需要修改任务的配置然后重新启动服务(进程),这样会降低数据采集效率造成不便。针对于此,本技术实施例可以无需重启服务就可以实现对数据采集任务的实时修改。因此,在一些实施例中,该方法还可以包括:
98.当所述nanomsg模块与所述服务设备建立通信连接时,通过所述nanomsg模块接收所述服务设备发送的任务配置信息;
99.从所述任务配置信息中,获取待调整任务的任务名和任务参数;
100.根据所述任务名和所述任务参数,对所述待调整任务进行任务调整操作;其中,所述任务调整操作包括下述中的至少一项:移除任务、新增任务、关闭任务、暂停任务和修改任务周期。
101.需要说明的是,在本技术实施例中,如果需要移除、新增、关闭、暂停某个任务或修改某个任务运行周期等,当nanomsg模块与服务设备建立了通信连接时,就可以通过nanomsg模块接收服务设备发送的任务配置信息,任务配置信息可以包含有例如任务配置文件和运行指令等。当nanomsg模块接收到服务设备发送的任务配置信息之后,就可以从中获得需要进行任务调整操作的待调整任务的任务名以及相关的任务参数。apscheduler模块内的异步任务会根据待调整任务的任务名和任务参数实时地更新数据采集任务的配置文件,并修改数据采集任务,按照修改后的参数来执行数据采集任务。apschedule模块就可以通过前述实例化的add_job,remove_job,shutdown,pause,modify等方法进行添加任务、移除任务、关闭任务、暂停任务或者修改任务等任务调整操作。
102.示例性地,某一个数据采集任务的执行周期是5秒,但是因为某些需求,需要将其执行周期调整为10秒,此时就可以通过服务设备发送相关的任务配置信息,将该任务的执行周期修改为5秒,且在此之后就按照新的执行周期5秒来执行该数据采集任务。
103.示例性地,某一数据采集任务暂时不需要继续执行,那么可以通过服务设备发送该任务的任务名以及暂停指令,从而用户设备就会停止执行该数据采集任务。
104.示例性地,某一数据采集任务在此后都不需要再执行,那么可以通过服务设备发送该任务的任务名以及删除指令,从而用户设备就会将该数据采集任务的配置文件进行删除并不再执行该数据采集任务。
105.还需要说明的是,此时还可以通过执行一个后置任务,将对数据采集任务的重新设置更新到最初加载的配置文件中去,即使得用户设备中的数据采集任务的配置文件是根据服务设备发送的任务配置信息进行更新后的最新的配置。这样,如果服务重启,数据采集
任务还能够保持更新后的配置。
106.示例性地,如果在数据采集任务的执行过程中,将某一数据采集任务的执行周期由10秒改为5秒之后,由于某些原因导致服务意外重启,或者需要重启服务。在重启之后,需要重新加载调度并执行数据采集任务,如果没有将服务设备发送的任务配置信息更新到数据采集任务的配置文件中,此时该数据采集任务的配置文件还是原始的配置,仍然会按照10秒的周期执行。但是由于本技术实施例已经将对数据采集任务的任务配置信息更新到了任务的配置文件中去,这样,重启服务之后,该数据采集任务就会按照更新后的5秒来执行。
107.进一步地,在一些实施例中,该方法还可以包括:
108.当所述apscheduler模块和所述nanomsg模块所属的进程停止时,检测所述数据采集任务的io文件是否关闭;
109.若所述io文件未正常关闭,则关闭所述io文件。
110.需要说明的是,当服务进程停止时也会触发另一个后置任务,来检查程序所有打开的文件io有没有正常关闭,如果没有正常关闭,就关闭io文件。即当接收到关闭和退出信号时执行这个后置任务,此时有些数据采集任务还正在进行,会等待该任务执行完成,相当于是采集任务的收尾工作,确保io文件正常关闭。
111.还需要说明的是,在本技术实施例中,在与服务设备建立通信连接之后,用户设备会将目标数据发送给服务设备,服务设备接收目标数据会进行具体处理。在一些实施例中,如果以服务设备作为数据采集方法的执行主体,那么该方法可以包括:
112.接收用户设备通过nanomsg模块发送的目标数据;
113.对所述目标数据进行处理。
114.需要说明的是,如果服务设备和用户设备的nanomsg模块成功建立了通信连接,那么在用户设备采集到数据即任务执行结果之后,nanomsg会对任务执行结果进行消息处理,并将处理后的目标数据发送给服务设备,服务设备接收到目标数据之后自行处理,例如目标数据中包含有系统日志的错误信息,则进行告警等。
115.进一步地,在一些实施例中,对于服务设备来说,该方法还可以包括:向用户设备发送任务配置信息。
116.需要说明的是,如果需要对数据采集任务进行调整,例如移除任务、新增任务、关闭任务、暂停任务和修改任务周期等,则可以通过服务设备向用户设备发送相应的任务配置信息。这样,用户设备在接收到任务配置信息后,对数据采集任务进行相应的调整操作。
117.本实施例提供了一种数据采集方法方法,该方法应用于用户设备,所述用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中,通过确定待执行的数据采集任务;在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。这样,通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务进程中,这时候仅需要开启单个服务即可完成数据采集任务,从而能够减少开启的服务数量,节省系统资源,并且降低系统资源的占用率,进而提升系统性能。另外,当需要移除、新增、关闭、暂停某个任务或修改某个任务运行周期等时,可以通过服务设备下发相应的任务配置信息,服务设备根据任务配置信息实时地对待调整任务进行任务调整操作,实现了无需重启服务就可以实时地
对数据采集任务进行各种操作或者修改。
118.本技术的另一实施例中,参见图2,其示出了本技术实施例提供的另一种数据采集方法的具体流程示意图。如图2所示,该方法可以包括:
119.s201、启动系统,twisted框架开启等待事件的循环模式,等待事件任务进入运行。
120.需要说明的是,本技术实施例提供的数据采集方法可以应用于数据采集系统中,该数据采集系统至少可以包括前述实施例所述的用户设备(也可以称为客户端/用户端)。示例性的,通过图3a所示的数据采集系统来实现本技术实施例所述的数据采集方法。
121.如图3a所示,其示出了本技术实施例提供的一种数据采集系统的组成结构示意图,该数据采集系统至少包括用户设备,还可以包括服务设备(也可以称为服务端)。其中,用户设备可以包括以下模块:tasks模块、apscheduler模块(也可以称为apscheduler任务调度模块)、nanomsg模块(也可以称为nanomsg消息队列模块、nanomsg消息队列)以及twisted框架模块(也可以称为twisted事件驱动网络框架模块)。
122.还需要说明的是,本技术实施例所提供的数据采集方法在数据采集系统中执行时,可以如图3b所示,其示出了本技术实施例提供的一种数据采集方法的应用框架示意图。可以结合图3b所提供的数据采集方法的应用框架示意图与图2所提供的数据采集方法的具体流程示意图来共同理解本技术实施例。
123.需要说明的是,本技术实施例通过twisted框架(即twisted框架模块)将定时任务框架apscheduler(即apscheduler模块)和nanomsg消息队列(即nanomsg模块)集成到一个服务进程中,在进行数据采集时,即仅需开启单个服务,就能够完成数据采集等任务。twisted框架是一个事件驱动型的网络模型,twisted的核心就是reactor的事件循环,因此在本技术实施例中,在启动系统(即数据采集系统)时,twisted框架模块就会开启等待事件的循环模式,即reactor模式,等待事件任务进入运行。
124.s202、将apscheduler模块作为一个事件添加到twisted框架模块。
125.需要说明的是,apscheduler是一种分布式任务定时框架,可以在指定的事件规则执行指定的作业,scheduler是apscheduler模块的调度器。本技术实施例提供的数据采集方法是基于twisted框架的,因此在本技术实施例中,所采用的调度器为twistedscheduler,通过scheduler=twistedscheduler()将调度器twistedscheduler实例化,并将apscheduler模块作为一个事件添加到twisted框架模块中。这里的实例化操作使得在后续步骤中,apscheduler模块可以执行remove_job,add_job,shutdown,pause,modify等方法来实现对数据采集任务的移除、添加、关闭、暂停、修改等。
126.还需要说明的是,由于此时数据采集系统刚启动,还未接收服务设备发送的外部指令、任务配置信息等,因此在本步骤中只用到add_job方法,通过scheduler.add_job(《任务名》,《周期》)方法,将tasks模块中相应的数据采集任务的任务函数添加到调度任务。这里,周期通过数据采集任务的配置文件获取,如果配置文件中没有周期的配置数据,则将周期设置为预设默认值,也可以通过服务设备发送相应的周期数据进行配置。
127.s203、将nanomsg模块作为一个事件添加到twisted框架模块。
128.需要说明的是,本技术实施例通过python的pynng库调用nanomsg底层接口,启动一个nanomsg消息队列(nanomsg模块),并绑定到一个端口上,将nanomsg模块实例化后也作为一个事件加入到twisted框架模块中,从而实现了将apscheduler模块与nanomsg模块绑
定在同一服务进程中。此时,nanoms模块就可以等待与服务设备进行通信。
129.s204、对queue标准库执行实例化操作,用于暂时保存采集到的数据。
130.需要说明的是,queue标准库即前述实施例中的缓存队列的优选,其作用是暂时存储数据采集任务的任务运行结果,并供nanomsg模块读取。
131.s205、在apscheduler模块开始调度前,先执行一次前置任务,为数据采集任务创建环境。
132.需要说明的是,启动系统后,在apscheduler开始调度任务之前,需要优先执行一次前置任务,为apscheduler调度的数据采集任务创建环境,确定当前运行的操作系统,检查数据采集任务所需依赖包。例如,首先获取系统信息,根据系统信息判断当前运行的系统是windows还是linux,然后对于不同的系统选择相应的数据采集任务;再去读取数据采集任务的配置文件获取各任务的调度周期及相关参数;并加载选择的数据采集任务和对应的调度周期。还需要说明的是,前置任务在整个服务启动时,apscheduler模块对数据采集任务开始进行调度前开始执行,对系统进行检查。在执行一次之后,就不会再进行了,除非是将服务关闭后又重新启动。
133.s206、服务设备与用户设备建立通信连接。
134.需要说明的是,在前述步骤s203中,nanomsg模块已经绑定了一个端口用以和服务设备进行通信,因此,在本步骤中,服务设备就可以通过用户设备的ip地址以及绑定好的端口号以及pair协议连接到nanomsg模块,从而确保服务设备和用户设备能够通过nanomsg模块进行通信。即在本技术实施例中,用户设备和服务设备之间的通信正是通过nanomsg模块来实现的。
135.s207、到达数据采集任务的周期后,执行该数据采集任务,将任务运行结果以序列化格式存储到queue标准库中。
136.在apscheduler模块加载完数据采集任务(由于本技术实施例的数据采集任务通常是周期性执行的,因此,在本技术实施例中,数据采集任务也可以称为周期任务)后,到达指定周期后开始执行相应的数据采集任务,并将任务运行结果以序列化格式存储到queue标准库中。
137.需要说明的是,当数据采集任务加载完成后,如果时间达到数据采集任务的任务周期,就开始执行数据采集任务,得到任务运行结果。这里的任务运行结果可以为采集到的数据等,将其以序列化格式存储到queue标准库中,具体地,可以将任务运行结果以键值对的形式序列化为json格式存储在queue标准库中。
138.还需要说明的是,apscheduler支持异步任务执行,因此,在本技术示例中,可以同时调度并执行多个数据采集任务。
139.s208、nanomsg模块从queue标准库中读取数据,并将数据发送给服务设备。
140.在本技术实施例中,当queue中有数据时,nanomsg模块直接读取相应的数据,发送给服务设备,服务设备收到数据后自行进行处理。
141.需要说明的是,queue标准库用于存储执行数据采集任务得到的任务运行结果,将任务运行结果存储到queue标准库中后,queue标准库中就有了数据,nanomsg模块就可以直接从queue标准库中读取任务执行结果,并将读取到的任务执行结果处理后发送给服务设备。服务设备在收到任务执行结果之后结合需求进行处理。
142.还需要说明的是,nanomsg模块从queue标准库中读取了数据之后,queue标准库中将不再保存已经被读取的任务执行结果。
143.还需要说明的是,如果在步骤s206中,nanomsg模块未与服务设备建立连接,nanomsg模块也会从queue标准库中获取任务执行结果,然后进行丢弃,以保证在用户设备与服务设备建立连接时获取到的目标数据是实时的。
144.s209、如果需要移除、新增、关闭、暂停某数据采集任务或修改某数据采集任务的执行周期,可通过服务设备发送相应的任务配置信息。
145.需要说明的是,在系统启动之后运行的过程中,如果需要移除、新增、关闭、暂停某个数据采集任务或修改某个数据采集任务的执行周期,则服务设备可以直接向用户设备下发相应的任务配置信息如任务配置、运行指令等。
146.s2010、根据服务设备发送的任务配置信息对任务进行处理。
147.nanomsg模块收到相应的数据后,调用scheduler实例的remove_job,add_job,shutdown,pause,modify方法,带上相应的任务名对相应的任务进行对应的操作。
148.需要说明的是,用户设备的nanomsg模块在获取到用户设备下发的相关任务配置和运行指令之后,就根据任务配置和运行指令所指示的内容进行相应地操作,从任务配置信息中就可以获得需要进行修改的任务名以及进行修改所需的相应参数,通过调用scheduler实例的remove_job,add_job,shutdown,pause,modify等方法,带上相应的任务名对相应的任务进行对应的操作。
149.还需要说明的是,在收到服务设备下发的任务配置信息后,会通过一个后置任务将这些任务配置信息更新到数据采集任务的配置文件中去。在事件循环过程中,系统会检测到配置文件发生变化,然后按照最新的配置文件来执行数据采集任务。
150.这样,在系统的运行过程中,可以通过服务设备下发任务配置信息的方式来实时地对任务进行相应修改,无需重启服务。而且,如果服务意外关闭或者重启了,再次启动系统的时候,能够保证加载的数据采集任务的配置信息是更新后的,维持上次执行任务的配置。
151.在服务进程停止时也会触发一个后置任务,检查程序所有打开的文件io有没有正常关闭,如没有就主动关闭。
152.简言之,本技术实施例所提供的数据采集系统各功能模块可以用于实现以下功能:
153.tasks模块是需要执行的任务包,包含前置任务,后置任务以及各种数据采集任务。
154.其中,前置任务,是在系统启动后,调度数据采集任务之前执行的任务。首先获取系统信息,根据获取到的系统信息判断当前运行的系统是windows还是linux,然后选择与当前运行的系统相应的数据采集任务;再读取数据采集任务的配置文件来获取各数据采集任务的调度周期及相关参数,加载选择的数据采集任务和对应的调度周期及相关参数。
155.其中,数据采集任务,可以通过设定的参数周期运行,其可以包括采集硬件信息;cpu、内存、磁盘的使用率的监控;对指定程序的运行状态进行监控;操作系统及各程序的日志分析,当日志中有错误是就提取出错误信息。
156.其中,后置任务,在两种上情况下触发,一是在服务进程停止时检查程序所有打开
的文件io有没有正常关闭,如没有就主动关闭,即只在接收到关闭和退出信号时执行,主要是整个数据采集过程中的收尾工作;二是在通过nanomsg与服务设备通信的过程中,如接收到任务配置指令调用后置任务,将对数据采集任务的重新设置更新到系统启动时加载的数据采集任务的配置文件中,以便在下次系统重启时,保持上次的任务执行配置。
157.apscheduler模块负责调度tasks模块中的数据采集任务,从tasks中加载任务函数,并实现定时、周期性或即时性的异步运行。
158.nanomsg模块通过pair协议与服务设备连接,实现双向通信(即用户设备和服务设备之间的相互通信);nanomsg模块还可以接收服务设备下发的任务配置及运行指令;获取下发的任务名和参数,用以进行相应添加、启动、暂停、移除任务操作,并将apscheduler调度的异步任务的执行结果主动对服务设备发送。
159.twisted框架模块包含twisted和pynng;其中pynng是一个python库,用于调用nanomsg接口,实现nanomsg模块的功能。可使用nanomsg模块的pair协议,开启一个nanomsg模块并绑定一个端口,供服务设备连接通信。使用queue标准库暂存数据采集结果。twisted是基于reactor模式的异步io网络框架,其负责进行事件任务循环,即启动twisted reactor后,开始reactor循环,等待事件进入。
160.结合本技术实施例所提供的数据采集方法的具体流程,参见图4,其示出了本技术实施例提供的一种事件循环过程的流程示意图。如图4所示,该事件循环过程是基于twisted框架来进行的,启动twisted reactor模式之后,反应堆回路(reactor loop)会不断进行循环扫描即监听事件,当有事件进入时,通过逻辑处理来完成数据采集任务。结合上述可知,本技术实施例将apscheduler模块和nanomsg模块分别实例化后作为事件加入twisted框架中,将两者绑定在一个服务进程中。具体地,如图4所示,apscheduler模块通过scheduler.add_iob(task)方法调度数据采集任务,在执行数据采集任务得到任务运行结果之后,通过queue.put(task_result)方法将运行结果加载到queue标准库中;nanomsg模块再通过queue.get(task_result)方法从queue标准库中获取任务结果,并通过nanomsg.send(task_result)方法将目标数据发送出去,如发送给服务设备。
161.综上所述,本技术实施例提供的一种基于twisted框架的数据采集方法,可以包括如下步骤:
162.步骤1:初始化操作。其包括以下步骤:
163.步骤1-1:启动系统,twisted reactor开启等待事件的循环模式,等待事件任务进入运行。
164.步骤1-2:启动系统后,apscheduler框架中调度模块twistedscheduler进行实例化scheduler=twistedscheduler(),然后通过scheduler.add_job(《任务名》,《周期》)方法,将tasks中的模块相应的任务函数添加到调度任务,周期获取方式是通过配置文件或者预设默认值,也可以通过服务设备发送相应的数据进行配置。
165.步骤1-3:启动系统后,通过python的pynng库调用nanomsg底层接口,启动一个nanomsg模块,并绑定到一个端口上,待与服务设备通信。
166.步骤1-4:启动系统后,对queue执行实例化操作,用于临时存储采集到的数据。
167.步骤2:当apscheduler模块开始调度前,会优先执行一次前置任务,为数据采集任务创建所需环境。
reactor中;再用pynng库调用nanomsg模块底层接口,绑定到一份上端口并实例化后,也作为一个事件加入到twisted reactor中,实现两者同一服务进程的绑定,减少了服务数量,优化了服务资源。而且本技术实施例通过服务设备下发任务指令实时的去移除、新增、关闭、暂停或修改任务周期,不需要重启服务,从而保证了数据采集的效率。
179.本技术的再一实施例中,参见图5,其示出了本技术实施例提供的一种数据采集装置50的组成结构示意图。其中,该数据采集装置50应用于用户设备,该用户设备包括apscheduler模块和nanomsg模块,且所述apscheduler模块和所述nanomsg模块集成在twisted框架中。如图5所示,该数据采集装置50可以包括:确定单元501、执行单元502和发送单元503,其中,
180.所述确定单元501,配置为确定待执行的数据采集任务;
181.所述执行单元502,配置为在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;
182.所述发送单元503,配置为通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。
183.在一些实施例中,所述确定单元501,还配置为获取系统信息;以及根据所述系统信息,确定当前运行的操作系统;并将所述操作系统对应的数据采集任务确定为待执行的数据采集任务。
184.在一些实施例中,在所述执行所述数据采集任务,得到任务执行结果之后,所述执行单元502,还配置为将所述任务执行结果以预设形式序列化存储至缓存队列;以及在所述缓存队列中有数据存在的情况下,通过所述nanomsg模块直接从所述缓存队列中读取所述任务执行结果。
185.在一些实施例中,所述数据采集任务包括下述中的至少一项:
186.硬件信息采集任务,中央处理器cpu使用率采集任务,内存使用率采集任务,磁盘使用率采集任务,程序运行状态采集任务,日志分析与错误信息采集任务。
187.在一些实施例中,如图5所示,所述数据采集装置50还可以包括启动单元504,配置为基于twisted框架,开启等待事件的reactor模式;以及对所述apscheduler模块进行实例化操作,得到twisted框架中的第一事件;以及通过预设库调用所述nanomsg模块的底层接口,并对所述nanomsg模块进行实例化,得到twisted框架中的第二事件;以及基于所述第一事件和所述第二事件,使得所述apscheduler模块和所述nanomsg模块处于同一服务进程中。
188.在一些实施例中,如图5所示,所述数据采集装置50还可以包括检测单元505,配置为当所述apscheduler模块和所述nanomsg模块所属的同一服务进程停止时,检测所述数据采集任务的io文件是否关闭;以及若所述io文件未正常关闭,则关闭所述io文件。
189.在一些实施例中,如图5所示,所述数据采集装置50还可以包括接收单元506和调整单元507;其中,
190.所述接收单元506,配置为当所述nanomsg模块与所述服务设备建立通信连接时,通过所述nanomsg模块接收所述服务设备发送的任务配置信息;
191.所述调整单元507,配置为根据所述任务名和所述任务参数,对所述待调整任务进行任务调整操作;其中,所述任务调整操作包括下述中的至少一项:移除任务、新增任务、关
闭任务、暂停任务和修改任务周期。
192.在一些实施例中,所述数据采集装置50还可以包括丢弃单元508,配置为当所述nanomsg模块与所述服务设备未建立通信连接时,在通过所述nanomsg模块对所述任务执行结果进行消息处理后,将处理后的目标数据进行丢弃。
193.可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
194.所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
195.因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现前述实施例中任一项所述方法的步骤。
196.上述数据采集装置50可以应用于用户设备,基于上述的一种数据采集装置50的组成以及计算机存储介质,参见图6,其示出了本技术实施例提供的一种用户设备60的具体硬件结构示意图。如图6所示,可以包括:通信接口601、存储器602和处理器603;各个组件通过总线系统604耦合在一起。可理解,总线系统604用于实现这些组件之间的连接通信。总线系统604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统604。其中,
197.通信接口601,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
198.存储器602,用于存储能够在处理器603上运行的计算机程序;
199.处理器603,用于在运行所述计算机程序时,执行:
200.确定待执行的数据采集任务;
201.在通过所述apscheduler模块进行所述数据采集任务的调度后,执行所述数据采集任务,得到任务执行结果;
202.通过所述nanomsg模块对所述任务执行结果进行消息处理,并将处理后的目标数据发送至服务设备。
203.可以理解,本技术实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高
速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步链动态随机存取存储器(synchronous link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本文描述的系统和方法的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。
204.而处理器603可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器603可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器603读取存储器602中的信息,结合其硬件完成上述方法的步骤。
205.可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
206.对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
207.可选地,作为另一个实施例,处理器603还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的数据采集方法的步骤。
208.基于上述用户设备60的组成以及硬件结构示意图,参见图7,其示出了本技术实施例提供的一种数据采集系统70的组成结构示意图。如图7所示,该数据采集系统70可以包括用户设备701和服务设备702。其中,用户设备701可以是前述实施例所述的用户设备60,服务设备702可以是前述实施例所述的服务设备、服务端等。
209.在本技术实施例中,由于通过twisted框架将apscheduler模块和nanomsg模块集成在同一服务进程中,当数据采集系统70进行数据采集时,apscheduler模块对数据采集任务进行调度,并执行该数据采集任务;然后由nanomsg模块将任务执行结果处理后得到的目标数据向服务设备发送,如此实现了在单个服务中完成数据采集任务,而且还实现了不用重启服务就可以对任务进行移除、新增、关闭、暂停或修改任务周期等操作,不仅减少了开
启的服务数量,节省系统资源,而且提高了资源利用率。
210.以上所述,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。
211.需要说明的是,在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
212.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
213.本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
214.本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
215.本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
216.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献