六、Datax通过json字符串运行

Datax通过json字符串运行

  • 一、场景
  • 二、代码实现

一、场景

  • 制作一个web应用,在页面上配置一个json字符串,保存在数据库里面。在执行json的时候,动态在本地创建一个json文件后执行,并识别是否成功,将执行过程保存在数据库中。
    • 写一个函数,传入json字符串
    • 识别datax是否执行成功
    • 获取执行过程的打印信息
    • 提取执行成功的结果信息

二、代码实现

  • python环境支持:2.x、3.x
# -*- coding:utf-8 -*-import re
import tempfile
import subprocessdef re_search(pattern, text, default=""):search_obj = re.search(pattern, text)return search_obj.group(1) if search_obj else defaultdef parse_datax_success_result(output):# 提取执行成功的结果信息return {"start_time": re_search(r'启动时刻\s+:\s+(.*)', output),"end_time": re_search(r'结束时刻\s+:\s+(.*)', output),"total_time": re_search(r'总计耗时\s+:\s+(.*)', output),"average_flow": re_search(r'平均流量\s+:\s+(.*)', output),"write_speed": re_search(r'写入速度\s+:\s+(.*)', output),"total_records": re_search(r'读出记录总数\s+:\s+(\d+)', output),"total_failures": re_search(r'读写失败总数\s+:\s+(\d+)', output),}def datax_run(json_configuration, datax_path="/data/datax/bin/datax.py"):with tempfile.NamedTemporaryFile() as json_configuration_file:# 创建临时文件,程序运行完,文件会自动删除json_configuration_file.write(json_configuration.encode("utf-8"))# 将写入内存缓冲区中的文件,刷入到磁盘中json_configuration_file.flush()# 获取文件路径json_configuration_file_path = json_configuration_file.name# 定义要执行的 datax 命令datax_command = "python %s %s" % (datax_path, json_configuration_file_path)# 使用 subprocess 模块执行命令process = subprocess.Popen(datax_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)# output:命令输出信息# error:错误信息output, error = process.communicate()# 获取命令的返回码return_code = process.returncode# 如果返回码为0,那么是成功is_success = return_code == 0# 如果成功,那么解析datax的结果信息datax_result_info = parse_datax_success_result(output) if is_success else {}return is_success, datax_result_info, output, error, return_codeif __name__ == '__main__':with open("/data/datax/job/oracle_to_mysql.json", "r") as f:print(datax_run(f.read()))

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/469756.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[字符串] Manacher算法

回文串性质 Manacher算法 介绍 以o(n)时间复杂度,让字符串中每个位置作为回文中心来计算回文半径的算法,所以回文半径和回文中心是实时更新的 如何以转换后的回文半径来计算回文串长度 为什么除2后向下取整,因为我们要计算蓝色方块的个数&a…

山西电力市场日前价格预测【2024-02-12】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-12)山西电力市场全天平均日前电价为127.42元/MWh。其中,最高日前电价为369.24元/MWh,预计出现在18:45。最低日前电价为0.00元/MWh,预计出…

springsecurity6使用

spring security 中的类 : AuthenticationManager : 实现类:ProviderManager 管理很多的 provider ,,, 经常使用的,DaoAuthenticationProvider , 这个要设置一个 UserDetailService , 查找数据库&#xff…

在python中JSON数据格式的使用

什么是JSON? JSON是一种数据格式,由美国程序设计师DouglasCrockford创建的,JSON全名是JavaScript Object Notation,由JSON英文全文字义我们可以推敲JSON的缘由,最初是为JavaScript开发的。这种数据格式由于简单好用被大量应用在We…

数据分析案例-基于亚马逊智能产品评论的探索性数据分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

PHP脉聊交友系统网站源码,可通过广告变现社交在线聊天交友即时通讯APP源码,附带视频搭建教程

探索全新社交体验:一站式PHP交友网站解决方案 🌐 全球化交友,无界沟通 在数字化的浪潮下,社交已不再受地域限制。我们的PHP交友网站不仅支持多国语言,还配备了即时翻译功能,让您轻松跨越语言障碍&#xff…

JVM(1)基础篇

1 初始JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 Java源代码执行流程如下: 分为三个步骤: 编写Java源代码文件。 使用…

【并发编程】ThreadPoolExecutor类

📝个人主页:五敷有你 🔥系列专栏:并发编程⛺️稳重求进,晒太阳 ThreadPoolExecutor 1) 线程池状态 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量 状态名 高三位 …

Spring Boot 笔记 021 项目部署

1.1 引入坐标,并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port7777 2.1.2 环境变量更新(略) 2.1.3 外部配置文件&#xff0c…

算法沉淀——栈(leetcode真题剖析)

算法沉淀——栈 01.删除字符串中的所有相邻重复项02.比较含退格的字符串03.基本计算器 II04.字符串解码05.验证栈序列 栈(Stack)是一种基于先进后出(Last In, First Out,LIFO)原则的数据结构。栈具有两个主要的操作&am…

幻兽帕鲁游戏联机的时候,显示“网络连接超时”怎么解决?

如果你在游戏联机的时候,显示“网络连接超时”,可以检查下: 1、前提是你已经按照教程部署成功 2、检查防火墙有没有忘记设置,协议是UDP(只有TCP不行,一定要有UDP),端口是否填了8211&…

java数据结构与算法刷题-----LeetCode459. 重复的子字符串

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 本题的高效解法,需要使用KMP算法中,NEXT数组的处理…