高效批量工作流导入及脚本上线,利用DolphinScheduler接口轻松实现

file

实现了批量生成DolphinScheduler的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。

DolphinScheduler接口文档

DolphinScheduler是有接口文档的,地址是

http://IP:12345/dolphinscheduler/swagger-ui/index.html?language=zh_CN&lang=cn

不过这文档写的比较简略,自己需要研究研究。

token:所有的接口都需要用到token

file

在安全中心-令牌管理 创建一个token 。记住这个token,后面所有的接口都需要用到 。

header:根据上面的token组成请求要用的header

token = ''
headers = {'Accept': 'application/json','token': token
}

项目ID project_id 可以在查看项目工作流时,在url中找到。

DolphinScheduler导入任务接口

导入任务的接口是

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')

到此 就可以实现导入-批量全自动了。

打完收工,祝你不加班。

原文链接:https://blog.csdn.net/weixin_45399602/article/details/143226396

本文由 白鲸开源 提供发布支持!

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

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

相关文章

IDEA如何打开每日提示?

前言 大家好,我是小徐啊。我们在使用IDEA开发Java应用的时候,经常需要使用IDEA的各种各样的技巧,提示。这个在每次IDEA打开的时候,会自动弹出来。但有时候,我们可能不小心把这个提示设置成关闭了,导致后面打开IDEA的时候,再也不弹出这个提示了。这样我们可能就不能很全面…

如何用vscode打开obj、glb文件,查看3D文件

方案1:安装插件 3D Viewer for VSCode,安装完可以查看obj 但是不懂为啥是白色的 glTF Tools,安装完可以查看gltf 启动位置在右上角:白色小山的图标 这个效果不错,看起来比较舒服。 但是gltf从哪里来呢? 首先我们有一个glb文件,右键它,点击倒数第二行的“glTF: import …

时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究

在进行时间序列分析之前,确定序列的平稳性是一个关键步骤。平稳性指的是时间序列的统计特性(如均值和方差)在时间维度上保持不变。本文将详细介绍如何运用 KPSS 检验和 Dickey-Fuller 检验来验证序列的平稳性。这两种检验方法基于不同的统计假设:KPSS 检验的原假设是数据非…

Svelte 最新中文文档翻译(4)—— 符文(Runes)下

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

固定测斜探头 土体位移变化数据支持 助力工程监测 无线传输

固定测斜探头 土体位移变化数据支持 助力工程监测 无线传输FI系列固定测斜探头是一款专为土体内部位移变化监测而设计的高精度测量仪器。无论是深基坑开挖、地铁地基、公路地基、挡土墙、坝体、尾矿库还是山体滑坡等工程项目,我们的测斜探头都能提供准确可靠的数据支持。该测斜…

研发效率低下?试试这些改进方法

最近这段时间,互联网上发生了很多大事:极越汽车突然宣布破产解散;养乐多上海工厂关闭;网传海信大规模裁员;……2024年即将结束,如果给2024年打个标签,有人说是“愈加魔幻”的一年,有人说是“挑战激增”的一年,也有人说是“生存指数飙升”的一年。 根据裁员追踪机构lay…

复现一下最近的湘岚杯的pwn部分

前言 pwn萌新一枚,这次湘岚杯pwn题只出了两道,后面orw写了exp但是一直打不通,后来发现思路错了。宇宙射线这题很新颖,虽然比赛期间没有做出来,但是赛后复现时学到了很多东西,还是很开兴的。题解过程 ret2text签到 解题思路: ​ 这题是pwn题中的签到题,题目描述也很清晰…

Nature Methods|可解释机器学习在计算生物学中的应用与陷阱

在计算生物学和生物信息学领域,机器学习技术正迅速改变着我们对生物系统的研究方式。然而,随着模型复杂度的增加,如何解释这些模型的行为并从中提取生物学意义,成为了一个亟待解决的问题。 最近,卡内基梅隆大学的Jian Ma和Ameet Talwalkar团队在《Nature Methods》杂志上发…

manim边做边学--淡入淡出变换

今天介绍Manim中用于淡入淡出变换的3个动画类:FadeToColor:聚焦于对象颜色的平滑转换,通过渐变增强视觉效果 FadeTransform:实现不同对象之间的渐变替换,让元素转换更加连贯 FadeTransformPieces:突出将对象碎片化并对各部分单独变换,适用于复杂物体的分解重组这三者都在…

抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞

抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞 代码链接不说废话,上代码!!! get.py # get.py import urllib.request import urllib.error import urllib.parse import json# 抓取网易云音乐指…

快手HoME多任务论文

论文链接:HoME: Hierarchy of Multi-Gate Experts for Multi-Task Learning at Kuaishou 背景 论文指出现在的MMOE/PLE模型存在以下几个问题: 1. 专家崩溃:专家的输出分布存在显着差异,并且一些专家使用 ReLU 的零激活率超过 90%,使得门网络很难分配公平的权重来平衡专家…

Linux 笔记

目录Linux 目录结构Linux 目录与 Windows 目录对比Windows 目录结构Linux 目录结构Linux 世界里---一切皆文件Linux 目录结构详解/bin/sbin/home/root/boot/lib/etc/usr/proc, 别动/srv, 别动/sys, 别动/tmp/dev/media/mnt/opt/usr/local/var/selinux常用快捷键案例常用命令开机…