使用DolphinScheduler接口实现批量导入工作流并上线
使用DS接口实现批量导入工作量并上线脚本
前面实现了批量生成DS的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。
DS接口文档
DS是有接口文档的地址是
http://IP:12345/dolphinscheduler/swagger-ui/index.html?language=zh_CN&lang=cn
不过这文档写的比较简略,不太能懂,那么只能自己去找了。
token
所有的接口都需要用到token
在安全中心-令牌管理 创建一个token 。记住这个token,后面所有的接口都需要用到 。
header
根据上面的token组成请求要用的header
token = ''
headers = {'Accept': 'application/json','token': token
}
项目ID project_id 可以在查看项目工作流时,在url中找到。
DS导入任务接口
导入任务的接口是
import_url = 'http://IP:12345/dolphinscheduler/projects/{project_id}/process-definition/import'
知道接口 就可以导入了
def import_job(file_path):
# 打开文件并读取为二进制数据with open(file_path, 'rb') as file:files = {'file': file}# 导入工作流response = requests.post(import_url, headers=headers, files=files)print(response.status_code)if response.status_code != 200:print('上传失败 '+file_path)
需要注意的是,导入任务时 只支持二进制 。
file_path 是工作流文件,具体实现 可以工作流中导出一个作为参考。
重复使用上述方法,就可以实现批量导入任务。
工作流上线
使用上述方法批量完成任务上传后,依旧有问题,逐个上线工作量也是个不小的工作量,因此继续使用接口。
经过研究发现,上线工作流需要先获取工作流的调度ID 。
获取工作流列表 - > 获取工作流code -> 获取所有工作流的调度ID -> 工作流上线
获取工作流列表
这是接口地址
jobs_url = 'http://IP:12345/dolphinscheduler/projects/{project_id}/process-definition'
不过这个要分页查询,稍微有一点点麻烦
def get_jobs_list():# 分页查询# 初始化分页参数pageNo = 1pageSize = 10url = f'{jobs_url}?pageSize=10&pageNo=1&searchVal='# 构建完整的URL# 存储所有结果all_items = list()while True:# 构建完整的URLurl = f'{jobs_url}?pageSize={pageSize}&pageNo={pageNo}&searchVal='# 发送GET请求response = requests.get(url, headers=headers)# 检查响应状态码if response.status_code == 200:# 请求成功,处理响应数据items = response.content.decode()total = json.loads(items)["data"]["total"]item = json.loads(items)["data"]["totalList"]# 将当前页的数据添加到结果列表中for i in item:all_items.append(i)# 如果当前页没有数据,退出循环if pageNo * pageSize > total:breakif not items:break# 增加页码pageNo += 1else:# 请求失败,打印错误信息print('请求失败:', response.status_code, response.text)breakreturn all_items
all_items 是所有工作流的具体内容,需要提取一下
all_jobs = get_jobs_list()job_codes = [job['code'] for job in all_jobs]
这样就是所有的工作流code
获取调度ID
下面是调度ID的接口,因为不想分页,直接一页1000个。
schedules_url = 'http://36.133.140.132:12345/dolphinscheduler/projects/{project_id}/schedules?pageSize=1000&pageNo=1&processDefinitionCode='
使用这个接口就能拿到所有的调度ID
def schedule_id(job_code):url = schedules_url+str(job_code)response = requests.get(url, headers=headers)if response.status_code == 200:data = response.content.decode()js = json.loads(data)if len(js['data']['totalList'])>0 and js['data']['totalList'][0]['releaseState']=='OFFLINE':return js['data']['totalList'][0]['id']else:return ''
这里过滤了已经上线的调度ID 。
上线
万事俱备 终于可以上线了
online_url = 'http://36.133.140.132:12345/dolphinscheduler/projects/{project_id}/schedules/{scheduler_id}/online'
具体实现
def online_job(scheduler_id):url = online_url.format(scheduler_id=scheduler_id)response = requests.post(url, headers=headers)if response.status_code == 200:print('success')else:print('online job failed')
到此 就可以实现导入-批量全自动了。
打完收工,祝你不加班。
相关文章:

使用DolphinScheduler接口实现批量导入工作流并上线
使用DS接口实现批量导入工作量并上线脚本 前面实现了批量生成DS的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。 DS接口文档 DS是有接口文档的地址是 http://IP:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&lang…...
pycharm导出环境安装包列表
pycharm导出环境安装包列表 一、导出安装包列表二、安装requirements.txt三、列表显示已安装的包四、显示特定包的信息 一、导出安装包列表 pip freeze > requirements.txt二、安装requirements.txt pip install -r requirements.txt三、列表显示已安装的包 pip list四、…...

分体式智能网关在现代电力物联网中的优势有哪些?
随着电力系统的不断数字化和智能化,电力物联网已经成为现代电力行业发展的重要方向。电力物联网通过各种智能设备和传感器实现电力系统的监测、数据采集和分析,从而优化电力资源配置,提高电网的安全性和稳定性。在这个背景下,&quo…...

第14篇:下一代网络与新兴技术
目录 引言 14.1 下一代网络(NGN)的定义与特点 14.2 IPv6协议的改进与未来应用 14.3 软件定义网络(SDN) 14.4 网络功能虚拟化(NFV) 14.5 量子通信网络 14.6 软件定义广域网(SD-WAN&#x…...

物联网数据采集网关详细介绍-天拓四方
一、物联网数据采集网关的概述 物联网数据采集网关,简称数据采集网关,是物联网系统中的重要组成部分,位于物联网设备和云端平台之间。其主要职责是实现数据的采集、汇聚、转换、传输等功能,确保来自不同物联网设备的数据能够统一…...

2024软考网络工程师笔记 - 第10章.组网技术
文章目录 交换机基础1️⃣交换机分类2️⃣其他分类方式3️⃣级联和堆叠4️⃣堆叠优劣势5️⃣交换机性能参数 🕑路由器基础1️⃣路由器接口2️⃣交换机路由器管理方式2️⃣交换机路由器管理方式 交换机基础 1️⃣交换机分类 1.根据交换方式分 存储转发式交换(Store…...
C语言——字符串指针和字符串数组
目录 前言 一、定义区别 1、数组表示 2、指针表示 二、内存管理区别 1.字符数组 2.字符指针 三、操作区别 1、访问与修改 2、遍历 3...... 总结 前言 在C语言中,字符串随处可见,字符串是由字符组成的一串数据,字符串以null字符(\0)结尾&#…...
7-1回文判断(栈和队列PTA)
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。 若用C,可借助STL的容器实现。 输入格式: 输入待判断的字符序列,按回车…...

使用 NCC 和 PKG 打包 Node.js 项目为可执行文件(Linux ,macOS,Windows)
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 文章引言 步骤 1:…...
LeetCode:2747. 统计没有收到请求的服务器数目(滑动窗口 Java)
目录 2747. 统计没有收到请求的服务器数目 题目描述: 实现代码与解析: 滑动窗口 原理思路: 2747. 统计没有收到请求的服务器数目 题目描述: 给你一个整数 n ,表示服务器的总数目,再给你一个下标从 0 开…...
项目管理工具--【项目策划任务书】模板
项目策划任务书是项目管理中的重要文件,它详细描述了项目的各个方面,以确保项目能够顺利进行。撰写项目策划任务书时需要考虑以下几个关键要素: 基本信息:包括项目名称、负责人、所在单位、联系方式以及日期等基本信息,…...

雷池社区版那么火,为什么站长都使用雷池社区版??
雷池社区版是长亭科技开发的一款免费开源的 Web 应用防火墙(WAF),具有诸多优势,因此值得使用。 防护效果强大。能够检测并防御各种网络攻击,包括 SQL 注入、跨站脚本(XSS)、跨站请求伪造&#x…...
分布式日志有哪些?
分布式日志系统(Distributed Logging Systems)是在分布式计算环境中用来收集、存储和管理来自多个节点的日志数据的系统。这些系统通常设计用于处理高并发、大规模的日志数据流,并提供强大的查询和分析功能。 一、定义与背景 分布式系统通常…...

ETCD未授权访问风险基于角色认证和启用https的ca证书修复方案
ETCD未授权访问风险安全漏洞修复方案 ETCD未授权访问风险介绍基于角色认证的访问控制(BASIC认证)基于ca证书的https访问控制(TLS传输)下载cfssl认证配置工具生成ca认证证书修改etcd配置方式一方式二 访问etcd节点信息 patroni使用…...

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?
一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…...

问丫:创新社交平台的技术魅力与发展潜力
最近偶然间发现了一个很特别的社交网站,叫问丫。一开始我也只是抱着随便看看的心态去了解一下,没想到这个网站还蛮有意思的。 这个网站是由 LLMWorld 推出的,据说是一款跨时空跨次元的社交新产品。这个描述给网站蒙上了一层魔幻的纱布&#…...
iOS Swift逆向——被编译优化后的函数参数调用约定修复
头文件导入: typedef long long s64; typedef unsigned long long u64;typedef s64 Int; typedef u64 Bool;struct Swift::String {u64 _countAndFlagsBits;void *_object; };union Swift_ElementAny {Swift::String stringElement; };struct Swift_Any {Swift_Ele…...

self-supervised learning(BERT和GPT)
1芝麻街与NLP模型 我們接下來要講的主題呢叫做Self-Supervised Learning,在講self-supervised learning之前呢,就不能不介紹一下芝麻街,為什麼呢因為不知道為什麼self-supervised learning的模型都是以芝麻街的人物命名。 因為Bert是一個非常…...

基于RBF神经网络的双参数自适应光储VSG构网逆变器MATLAB仿真模型
“电气仔推送”获得资料(专享优惠) 模型简介 此模型源侧部分采用光伏发电系统与混合储能系统(蓄电池超级电容),并网逆变器采用虚拟同步发电机(VSG)控制,为系统提供惯量阻尼支撑。同…...

Openpyxl--学习记录
1.工作表的基本操作 1.1 工作表的新建打开与保存 1.1.1 创建工作簿 from openpyxl import Workbook from pathlib import Pathfile_path Path.home() / "Desktop" / "123.xlsx"# 1.创建工作簿 wb Workbook() # 2.访问默认工作簿 ws wb.active # 3.填充…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...