基于python的文件批处理方法
技术领域
1.本发明涉及文件批处理技术领域,尤其基于python的文件批处理方法。
背景技术:2.批处理是一种对电子计算机进行操作的方式,并且可以追溯到穿孔卡片的时代。批处理通常被理解为对一系列成批作业的处理。通常为每个单独的批处理作业提供了全部所需的程序、数据和指令,从而可以在完全没有用户干预的情况下执行。
3.目前技术方案采用 springcloud 远程调用,拉取远程服务器文件目录打包下载,通过ftp方式逐一操作原文件,然后对文件压缩处理,springcloud ,数据库 mongodb,ftp,采用微服务,定时读取数据库文件下载任务,通过ftp方式进行文件的打包下载。但现有技术通过远程调用实时传输流进行文件批处理过程中容易出现中断现象并且批处理实时效率低。
技术实现要素:4.本发明的目的在于克服现有技术的不足,提供基于python的文件批处理方法。
5.本发明的目的是通过以下技术方案来实现的:基于python的文件批处理方法,包括以下具体步骤:s1:用户创建下载任务,业务系统将压缩文件信息存入表中;s2:python通过任务数据找到服务器上对应文件压缩打包;s3:下载数据。
6.所述步骤s1具体为:用户在scrm前端界面进行文件检索,获取文件存储位置及文件名称,确定下载的文件范围,点击异步下载,创建下载任务,业务系统调用tsfcloud微服务创建任务单接口生成任务单,并将数据存储在 mysql 中。
7.所述下载任务包括操作人、任务编号、未开始状态、进行中状态、已完成状态和创建日期属性。
8.所述前端界面展示采用vue。
9.所述文件检索调用tsfcloud微服务获取文件接口并返回相关数据。
10.所述步骤s2具体为:python引入mysql库,通过定时轮训mysql 数据库中任务单,查看是否有打包任务,若存在未进行的下载任务,则进行多线程的文件打包,若下载任务不多,采用下载任务依次进行;打包任务完成后,将下载地址更新到下载任务表,同时通过mq消息发送系统内消息给操作人员;python将完成任务放到指定的文件服务器。
11.所述步骤s3具体为:操作人员在scrm文件下载功能中查看下载任务,进行文件的自主下载;记录下载日志及下次次数;
打包后文件通过参数配置,上传到ibm cos。
12.下载方式可根据不同的文件存储介质扩展,包括cos服务、云端存储、ftp 文件服务和直接下载地址。
13.本发明的有益效果:本发明是基于数据流传输处理文件,设计一套基于任务模式批处理打包文件方式,通过多途径(http,cos,ftp)进行下载,自定义设置时间间隔批处理,运用java(相关框架) 集成 python flask os file ftp cos 等算法批处理一套流程,该方式与scrm业务系统相融合,实现录音文件批量下载问题,解决原系统打包慢丢文件和各种失败的情况,提升操作友好度、文件处理性能。同时实现了批量处理文件的自动上次到指定路径(cos或ftp服务器),根据业务规则的自动删除文件等功能。单一下载方式更改为批量下载极大的提高了用户下载录音文件的效率,为线下快速质检录音文件提供保障。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
15.图1是本发明的流程图;图2是本发明的步骤一流程图;图3是本发明的步骤二流程图。
具体实施方式
16.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当人认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
18.本发明涉及技术术语如下:scrm:由apache软件基金会开发的-一个开源流处理平台,由scala和java编写。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
19.ftp:ftp(file transfer protocol,文件传输协议) 是 tcp/ip 协议组中的协议之一。ftp协议包括两个组成部分,其一为ftp服务器,其二为ftp客户端。其中ftp服务器用来存储文件,用户可以使用ftp客户端通过ftp协议访问位于ftp服务器上的资源。在开发网站的时候,通常利用ftp协议把网页或程序传到web服务器上。
20.mongodb:mongodb是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。
21.springboot:spring boot 是由 pivotal 团队提供的全新框架,其设计目的是用来简化新 spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
22.mq:消息队列(mq)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
23.vue:vue.js(vue)是一套用于构建用户界面的开源渐进式 javascript 框架。与其它大型框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,vue 也完全能够为复杂的单页应用提供驱动。
24.spring cloud:spring cloud是一系列框架的有序集合。它利用spring boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用spring boot的开发风格做到一键启动和部署。
25.mysql:mysql是一个关系型数据库管理系统,由瑞典mysql ab公司开发,目前属于oracle旗下公司。mysql是一种关系型数据库管理系统,在web应用方面mysql是最好的关系数据库管理系统)应用软件之一。
26.如图1所示,本发明主要用到python os file调用,动作关系:1.用户创建下载任务将需要压缩文件信息存入表中目前创建任务是在业务系统(scrm)中进行的,在scrm前端界面进行录音文件的检索,获取录音文件存储位置及文件名称,确定下载的文件范围;点击异步下载,创建下载任务;包含操作人、任务编号、状态(未开始、进行中、已完成)、创建日期等属性。考虑到控制目标压缩文件的大小,目前批量打包的文件个数限制在3万个文件。
27.技术方案:数据库:mysql;前端展示:vue;后端服务:tsfcloud(springcloud,springboot) 微服务;人为操作流程:1)用户登录系统2)查询录音文件(此时调用tsfcloud微服务获取录音文件接口返回相关数据)3)页面勾选需要打包的录音文件,点击确定(此时调用tsfcloud微服务创建任务单接口) 生成任务单 数据存储在 mysql 中4)操作流程如下图2所示:2. python通过任务数据找到服务器上对应文件压缩打包目前python服务部署在文件服务器,可以直接进行文件检索;实现逻辑:1)定时查找需要下载的文件任务;如果存在未进行的下载任务,则进行多线程的
文件打包;目前下载任务不多,暂时采用了下载任务依次进行;2)打包任务完成后,自动将下载地址更新到下载任务表,同时通过mq消息发送系统内消息给操作人员;目前python配置的将完成任务放到指定的文件服务器;然后再scrm文件下载功能中查看自己的下载任务,进行文件的自主下载;记录下载日志及下次次数;打包后文件通过参数配置,上传到ibm cos(集团私有对象存储),支持公有云但暂时未实现(出于安全考虑目前文件服务器禁止访问公网)技术方案数据库:mysql;脚本服务python;1)python flask服务 在文件服务器部署2)任务脚本编码-2.1 根据服务配置内核,设置多进程池pool = multiprocessing.pool(processes = 3);2.2 python 引入 mysql 库通过 设置每5分钟轮训一次mysql 数据库中任务单是否有打包任务;2.3 将任务单中需要打包的文件 在文件服务器定位到目录进行压缩到配置目录下 比如 /file/data ;3)逻辑流程如图3所示;3.下载方式可以根据不同的文件存储介质扩展,包括但不限于cos服务,云端存储,ftp 文件服务,直接下载地址等技术方案:cos(oom):ibm对象存储;公有云存储:比如七牛云;ftp 文件服务 :其他文件服务器;直接下载地址: 就是本地文件服务ftp;1)扩展python服务集成 http, ssh 等其他协议 ;2)将打包文件通过协议或者扩展 介质的 开放的上传方案api进行上传;3)其他介质可下载。
28.本发明关键点在于:1.通过宿主机python批处理压缩文件包,解决远程调用大量文件流传输问题。
29.2.选择python 脚本比其他技术 开发效率高,扩展业务逻辑方便。
30.3.python多进程处理的特点,大大提高处理效率。
31.多进程:python是运行在解释器中的语言,python中有一个全局锁(gil),在使用多进程(thread)的情况下,不能发挥多核的优势。而使用多进程(multiprocess),则可以发挥多核的优势真正地提高效率。
32.如果是io密集型,多线程的进程可以利用io阻塞等待时的空闲时间执行其他线程,提升效率。处理文件:pandas是python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观的处理关系型、标记型数据。成熟地io工具:读取文本文件(csv等支
持分隔符地文件)、excel文件、数据库等来源地数据,利用超快地hdf5格式保存/加载数据;根据服务配置内核设置多进程池(pool = multiprocessing.pool(processes = 3),配置进程数量为服务器进程的二分之一。
33.4.支持多种文件存储介质的文件下载。
34.本发明是基于数据流传输处理文件,设计一套基于任务模式批处理打包文件方式,通过多途径(http,cos,ftp)进行下载,自定义设置时间间隔批处理,运用java(相关框架) 集成 python flask os file ftp cos 等算法批处理一套流程,该方式与scrm业务系统相融合,实现录音文件批量下载问题,解决原系统打包慢丢文件和各种失败的情况,提升操作友好度、文件处理性能。同时实现了批量处理文件的自动上次到指定路径(cos或ftp服务器),根据业务规则的自动删除文件等功能。单一下载方式更改为批量下载极大的提高了用户下载录音文件的效率,为线下快速质检录音文件提供保障。
35.以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
技术特征:1.基于python的文件批处理方法,其特征在于,包括以下具体步骤:s1:用户创建下载任务,业务系统将压缩文件信息存入表中;s2:python通过任务数据找到服务器上对应文件压缩打包;s3:下载数据。2.根据权利要求1所述的基于python的文件批处理方法,其特征在于,所述步骤s1具体为:用户在scrm前端界面进行文件检索,获取文件存储位置及文件名称,确定下载的文件范围,点击异步下载,创建下载任务,业务系统调用tsfcloud微服务创建任务单接口生成任务单,并将数据存储在 mysql 中。3.根据权利要求2所述的基于python的文件批处理方法,其特征在于,所述下载任务包括操作人、任务编号、未开始状态、进行中状态、已完成状态和创建日期属性。4.根据权利要求2所述的基于python的文件批处理方法,其特征在于,所述前端界面展示采用vue。5.根据权利要求2所述的基于python的文件批处理方法,其特征在于,所述文件检索调用tsfcloud微服务获取文件接口并返回相关数据。6.根据权利要求1所述的基于python的文件批处理方法,其特征在于,所述步骤s2具体为:python引入mysql库,通过定时轮训mysql 数据库中任务单,查看是否有打包任务,若存在未进行的下载任务,则进行多线程的文件打包,若下载任务不多,采用下载任务依次进行;打包任务完成后,将下载地址更新到下载任务表,同时通过mq消息发送系统内消息给操作人员;python将完成任务放到指定的文件服务器。7.根据权利要求1所述的基于python的文件批处理方法,其特征在于,所述步骤s3具体为:操作人员在scrm文件下载功能中查看下载任务,进行文件的自主下载;记录下载日志及下次次数;打包后文件通过参数配置,上传到ibm cos。8.根据权利要求7所述的基于python的文件批处理方法,其特征在于,下载方式可根据不同的文件存储介质扩展,包括cos服务、云端存储、ftp 文件服务和直接下载地址。
技术总结本发明公开了基于Python的文件批处理方法,包括以下具体步骤:S1:用户创建下载任务,业务系统将压缩文件信息存入表中;S2:python通过任务数据找到服务器上对应文件压缩打包;S3:下载数据。本发明是基于数据流传输处理文件,设计一套基于任务模式批处理打包文件方式,通过多途径(http,cos,ftp)进行下载,自定义设置时间间隔批处理,运用java(相关框架)集成python flask os file ftp cos等算法批处理一套流程,该方式与SCRM业务系统相融合,实现录音文件批量下载问题,解决原系统打包慢丢文件和各种失败的情况。文件和各种失败的情况。文件和各种失败的情况。
技术研发人员:默立峰 范永新
受保护的技术使用者:启明信息技术股份有限公司
技术研发日:2022.06.30
技术公布日:2022/11/1