六、Datax通过json字符串运行

news2024/11/28 20:51:37

Datax通过json字符串运行

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

一、场景

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

二、代码实现

  • python环境支持:2.x、3.x
# -*- coding:utf-8 -*-

import re
import tempfile
import subprocess


def re_search(pattern, text, default=""):
    search_obj = re.search(pattern, text)
    return search_obj.group(1) if search_obj else default


def 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_code


if __name__ == '__main__':
    with open("/data/datax/job/oracle_to_mysql.json", "r") as f:
        print(datax_run(f.read()))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fgets的使用方法详解

fgets的使用 文章目录 fgets的使用前言(吹水,不看也罢)fgets 的基本语法使用示例fgets() 对输入的处理的特点gets() 与 fgets() 的主要区别 总结 前言(吹水,不看也罢) 鼠鼠今天在B站上大学的时候&#xff…

离散傅里叶变换

目标 我们将寻求以下问题的答案: 什么是傅里叶变换,为什么要使用它?如何在OpenCV中做到这一点?使用以下函数:copyMakeBorder() , merge() , dft…

蓝桥杯:C++排列与组合

排列是暴力枚举时的常见操作。有以下两种情况。 C的 next_permutation()是全排列函数,只能输出序列中所有元素的全排列。 本节将给出手写排列和组合的代码。因为在很多场合中不能使用系统自带的排列函数,所以需要自己编写。 全排列函数:nex…

Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试

2023年10月,我们发表了一篇关于TimeGPT的文章,TimeGPT是时间序列预测的第一个基础模型之一,具有零样本推理、异常检测和共形预测能力。 虽然TimeGPT是一个专有模型,只能通过API访问。但是它还是引发了对时间序列基础模型的更多研…

读十堂极简人工智能课笔记03_遗传算法与进化

1. 寻找正确答案 1.1. 卡尔西姆斯 1.1.1. 计算机图形艺术家和研究者 1.1.2. 演示过数字进化之创造性和新颖性的先驱 1.1.3. 1994年 1.1.3.1. 创造一批能游泳、走路、跳跃,甚至互相竞争的虚拟动物震惊了整个科学界 1.1.3.2. 它们的人工大脑却是个极其复杂的网络…

公需课考试怎么搜题找答案?推荐你使用这5个公众号和工具 #知识分享#其他#知识分享

大学生必备,这条笔记大数据一定定要推给刚上大学的学弟学妹!! 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试…

Leetcode-1572. 矩阵对角线元素的和

题目: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线…

解决ucore实验qemu不断重启问题

解决 ucore 实验 qemu 不断重启问题 做清华大学操作系统 ucore 实验 (x86版本),实验一编译后运行 qemu 发现系统不断重启,无法正常运行 kernel。实验环境是 ubuntu 22.04,gcc 11.4.0,ld 2.38。最终查证是链接脚本 kernel.ld 导致…

Docker 在window 2024版笔记 下载 安装 操作 配置

---Docker 前言--- Docker windows版官方版是一款专业开源的应用容器引擎,可以加快用户构建、共享和运行现代应用程序的速度,支持运行Linux和Windows Docker容器。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互…

[office] excel2016怎么求最大值和最小值 #职场发展#知识分享

excel2016怎么求最大值和最小值 excel求最大值最小值步骤: 1、鼠标左键双击计算机桌面Excel2016程序图标,将其打开运行。在打开的Excel2016程序窗口,点击“打开其他工作簿”选项,打开需要进行编辑的Excel工作表。如图所示; 2、在打…

SpringCloud-搭建Nacos配置中心

一、Nacos 功能介绍 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个分布式服务注册、配置管理,以及服务健康管理平台。在微服务架构中,配置管理是至关重要的一环,Nacos 提供了可靠、动态的配置…

python-分享篇-GUI界面开发-PyQt5-禁止窗体显示最大化按钮及调整窗体大小

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file nochange.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 禁止窗体显示最大化按钮及调整窗体大小from PyQt5 import QtCo…

开局托儿所

一,游戏规则 示例: 9549366345591582732535371762455786747469134955224161766515693255444341522757146691483635716392362557418825198461525396798798225943422864547928724689891326449758 二,贪心算法 我们先用贪心算法试一下&#xf…

wordpress好的网站主题

有什么好的网站主题,都分享在这里了。 蓝色风格的wordpress模板,好的wordpress网站主题,需要既好看,又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题,布局经典,设计好的&am…

Vue2学习第二天

Vue2 学习第二天 1. 数据绑定 Vue 中有 2 种数据绑定的方式: 单向绑定(v-bind):数据只能从 data 流向页面。双向绑定(v-model):数据不仅能从 data 流向页面,还可以从页面流向 data。 备注: 双向绑定一般都应用在表单…

大学生画图搜题答案神器?一键查询完备大学题库 #知识分享#经验分享#学习方法

大学生必备的搜题工具,专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索,每道题目都有详细的讲解,每个都堪称大学神器。 1.试题易 这是一个网站 涵盖初高中/大学/专升本/考研&…

python视频播放列表信息库之m3u8使用详解

m3u8库是什么? m3u8是一个用于解析和操作M3U8文件的Python库。M3U8文件,是指使用UTF-8编码格式的M3U文件,它们通常用于播放列表文件,尤其是在HTTP Live Streaming(HLS)中。简单来说,m3u8库能帮…

嵌入式中I2C 相关的硬件问题汇总及死锁解决办法

本文主要介绍如何解决I2C设备硬件设计上的各种问题,希望对大家有所帮助! 关于I2C协议详细的讲解,可以参考之前的推文:全面解析 I2C 通信协议 一般情况下, i2c 设备焊接没什么问题,按照设备手册一步步来&a…

<网络安全>《33 网络信息安全基础(4)网络安全工程师进阶体系(一)》

1 图谱 1 基础入门 1.1 网络安全导论 网络安全行业简介: 行业前景 历史 重要事件 网络安全意识与法律法规 安全意识 法律法规 案例 网络安全管理概述 安全运营、运维、模型 等保测评 等保简介、等保规定、流程和规范 1.2 渗透测试基础 渗透测试概述 - 流程、分…

Go语言每日一练——链表篇(九)

传送门 牛客面试笔试必刷101题 ----------------链表相加(二) 题目以及解析 题目 解题代码及解析 解析 这一道题主要是要对链表相加的过程进行模拟,虽然思路不难但是细节出比较多,这里博主的思路主要是先将两个链表反转过来然后以Head1为基础来模拟…