基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
一、本节目标
- 了解并掌握 Requests 模块的特点与用法
- 学会通过 Python+Requests 访问华为云 ModelArts 在线推理服务
- 熟悉 JSON 模块在 Python 中的数据序列化与反序列化
- 掌握 Python 文件 I/O 的基本操作
- 演示一个基于华为云 ModelArts + PyQt 的花卉分类桌面应用案例
二、Requests 模块简介与特点
-
简介
-
requests是 Python 第三方库,用于发送 HTTP/HTTPS 请求 -
安装命令:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
-
-
主要特点
- 简单易用:人性化 API,几行代码即可完成请求
- 支持 HTTPS:自动验证 SSL 证书
- 支持 Cookies:自动管理会话状态
- 支持文件上传:
files参数上传本地文件 - 支持会话管理:
requests.Session()跨请求保持连接和 Cookie
三、HTTP 协议基础
- 什么是 HTTP?
- 超文本传输协议(HTTP)是基于 TCP 的请求–响应协议
- 典型事务流程:
- 客户端(浏览器或脚本)与服务器建立 TCP 连接
- 客户端发送 HTTP 请求
- 服务器处理请求并返回响应
- 连接关闭或复用
- TCP/IP 七层模型(应用层:HTTP)
- 常见状态码
2xx成功:200 OK,201 Created3xx重定向:301 Moved Permanently4xx客户端错误:400 Bad Request,401 Unauthorized,404 Not Found5xx服务器错误:500 Internal Server Error
四、Requests 安装与基本示例
import requests# 发送 GET 请求
resp = requests.get('https://api.example.com/data')
print(resp.status_code) # HTTP 状态码
print(resp.text) # 响应内容(字符串)# 发送 POST 请求并上传文件
files = {'file': open('test.jpg', 'rb')}
resp = requests.post('https://api.example.com/upload', files=files)
print(resp.status_code, resp.text)
- 返回属性
resp.status_code:整数状态码resp.text:响应体(Unicode 文本)resp.json():直接将响应解析为 Python 对象(如果是 JSON)resp.headers:响应头字典
五、Requests 支持的 HTTP 方法
| 方法 | 用途 |
|---|---|
GET | 获取资源 |
POST | 创建资源 |
PUT | 更新资源 |
DELETE | 删除资源 |
HEAD | 获取头部信息 |
OPTIONS | 获取支持的 HTTP 方法 |
六、基于华为云 ModelArts 的在线服务访问
1. 获取 AK/SK
- 在华为云控制台 → 我的凭证 → 访问密钥,记录 Access Key (AK) 和 Secret Key (SK)
2. 获取在线服务信息
- 在 ModelArts 控制台 → 推理服务 → 找到已部署服务,复制 推理地址 URL
3. 下载 Python SDK
pip install apig-sdk
4. 编写调用代码
from apig_sdk import signer
import requests, json# 1) 构造请求签名
request = signer.HttpRequest('POST', url, {'x-sdk-content-sha256': 'UNSIGNED-PAYLOAD'})
sig = signer.Signer()
sig.Key = AK; sig.Secret = SK
sig.Sign(request)# 2) 发送请求
files = {'images': open('flower.jpg','rb')}
resp = requests.request(request.method,f"{request.scheme}://{request.host}{request.uri}",headers=request.headers,files=files
)# 3) 解析结果
print(resp.status_code)
result = resp.json()
print(json.dumps(result, indent=2))
- 参考文档:华为云推理服务 API 指南
七、JSON 模块简介与使用
-
什么是 JSON?
- 一种轻量级的数据交换格式,文本可读性高
-
Python 内置模块
jsonimport json# 序列化:Python → JSON 字符串 s = json.dumps({'class': 'flower', 'score': 0.92}, ensure_ascii=False)# 反序列化:JSON 字符串 → Python obj = json.loads('{"class":"rose","score":0.87}')
八、Python 的文件 I/O 操作
-
基本函数
f = open('data.txt', 'r', encoding='utf-8') text = f.read() # 读取全部 f.close()with open('data.txt','w',encoding='utf-8') as f:f.write('Hello, ModelArts!\n') # 自动 close -
常用模式
模式 含义 'r'只读(默认) 'w'写入(覆盖) 'a'追加 'rb'二进制读 'wb'二进制写
九、Base64 编码简介
-
用途
- 减少 HTTP 请求数,将小图片直接嵌入 HTML/CSS/JS
- 简单“加密”传输(非安全加密)
- 适合小图标、背景图
-
Python 示例
import base64# 编码 data = open('flower.jpg','rb').read() b64 = base64.b64encode(data).decode('ascii')# 解码 raw = base64.b64decode(b64) open('out.jpg','wb').write(raw)
十、基于华为云 + PyQt 实现花卉分类桌面应用案例
-
环境准备
pip install PyQt5 requests apig-sdk -
界面设计
- 一个按钮:选择本地图片
- 一个
QLabel:显示加载的图片 - 一个
QTextEdit:展示分类结果
-
工作流程
- 点击“打开图片” → 弹出文件对话框 → 读取并显示图片
- 将图片通过 Requests 调用 ModelArts 接口 → 解析 JSON
- 在结果框中按置信度从高到低显示:类别 + 得分
-
核心代码示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QFileDialog, QTextEdit from PyQt5.QtGui import QPixmap import requests, json from apig_sdk import signerclass FlowerApp(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('花卉分类 Demo')self.resize(600,400)# … 初始化按钮、图片区、结果区 …def open_image(self):path, _ = QFileDialog.getOpenFileName(self, '选择图片', '', 'Images (*.png *.jpg)')pix = QPixmap(path).scaled(300,300)self.image_label.setPixmap(pix)self.call_inference(path)def call_inference(self, img_path):# 同上节:签名 + requests + resp.json()result = resp.json()# 排序并显示text = '\n'.join(f"{cls}: {score:.2f}" for cls,score in zip(result['detection_classes'], result['detection_scores']))self.result_edit.setPlainText(text)if __name__ == '__main__':app = QApplication([])win = FlowerApp()win.show()app.exec_() -
运行:
python flower_app.py,即可体验离线 GUI + 在线推理相结合的完整流程。
温馨提示:
- 调试时可在命令行打印
resp.text与resp.status_code,快速定位签名或网络错误- PyQt 界面可按需扩充:增加进度条、错误提示、模型选择等
- 在生产环境中,注意对 AK/SK 做妥善管理,不要硬编码在脚本中
相关文章:
基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
基于华为云 ModelArts 的在线服务应用开发(Requests 模块) 一、本节目标 了解并掌握 Requests 模块的特点与用法学会通过 PythonRequests 访问华为云 ModelArts 在线推理服务熟悉 JSON 模块在 Python 中的数据序列化与反序列化掌握 Python 文件 I/O 的基…...
【Rust】基本概念
目录 第一个 Rust 程序:猜数字基本概念变量和可变性可变性常量变量隐藏 数据类型标量类型整型浮点型数值运算布尔型字符类型 复合类型元组数组 函数参数语句与表达式函数返回值 控制流使用 if 表达式控制条件if 表达式使用 else if 处理多重条件在 let 语句中使用 i…...
AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B专属管家大模型
环境: AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 Qwen2.-1.5B/3B Llama factory llama.cpp 问题描述: AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B管家大模型 解决方案: 一、准备数据集我这…...
C++学习之游戏服务器开发十四QT登录器实现
目录 1.界面搭建 2.登录客户端步骤分析 3.拼接登录请求实现 4.发送http请求 5.服务器登录请求处理 6.客户端处理服务器回复数据 7.注册页面启动 8.qt启动游戏程序 1.界面搭建 查询程序依赖的动态库 ldd 程序名 do 1 cdocker rm docker ps -aq 静态编译游戏服务程序&a…...
协同推荐算法实现的智能商品推荐系统 - [基于springboot +vue]
🛍️ 智能商品推荐系统 - 基于springboot vue 🚀 项目亮点 欢迎来到未来的购物体验!我们的智能商品推荐系统就像您的私人购物顾问,它能读懂您的心思,了解您的喜好,为您精心挑选最适合的商品。想象一下&am…...
【LLM】Ollama:容器化并加载本地 GGUF 模型
本教程将完整演示如何在支持多 GPU 的环境下,通过 Docker 实现 Ollama 的本地化部署,并深度整合本地 GGUF 模型。我们将构建一个具备生产可用性的容器化 LLM 服务,包含完整的存储映射、GPU 加速配置和模型管理方案。 前提与环境准备 操作系统…...
实践项目开发-hbmV4V20250407-Taro项目构建优化
Taro项目构建优化实践:大幅提升开发效率 项目背景 在开发基于ReactTaro的前端项目时,随着项目规模的增长,构建速度逐渐成为开发效率的瓶颈。通过一系列构建优化措施,成功将开发环境的构建速度提升了30%-50%,显著改善…...
MySQL中根据binlog日志进行恢复
MySQL中根据binlog日志进行恢复 排查 MySQL 的 binlog 日志问题及根据 binlog 日志进行恢复的方法一、引言二、排查 MySQL 的 binlog 日志问题(一)确认 binlog 是否开启(二)查找 binlog 文件位置和文件名模式(三&#…...
Jenkins的地位和作用
所处位置 Jenkins 是一款开源的自动化服务器,广泛应用于软件开发和测试流程中,主要用于实现持续集成(CI)和持续部署(CD)。它在开发和测试中的位置和作用可以从以下几个方面来理解: 1. 在开发和测…...
【集合】底层原理实现及各集合之间的区别
文章目录 集合2.1 介绍一下集合2.2 集合遍历的方法2.3 线程安全的集合2.4 数组和集合的区别2.5 ArrayList和LinkedList的区别2.6 ArrayList底层原理2.7 LinkedList底层原理2.8 CopyOnWriteArrayList底层原理2.9 HashSet底层原理2.10 HashMap底层原理2.11 HashTable底层原理2.12…...
软考高级-系统架构设计师 论文范文参考(二)
文章目录 论企业应用集成论软件三层结构的设计论软件设计模式的应用论软件维护及软件可维护性论信息系统安全性设计论信息系统的安全性设计(二)论信息系统的架构设计论信息系统架构设计(二) 论企业应用集成 摘要: 2016年9月,我国某省移动通信有限公司决定启动VerisB…...
srp batch
参考网址: Unity MaterialPropertyBlock 正确用法(解决无法合批等问题)_unity_define_instanced_prop的变量无法srp合批-CSDN博客 URP | 基础CG和HLSL区别 - 哔哩哔哩 (bilibili.com) 【直播回放】Unity 批处理/GPU Instancing/SRP Batche…...
【Linux运维涉及的基础命令与排查方法大全】
文章目录 前言1、计算机网络常用端口2、Kali Linux中常用的命令3、Kali Linux工具的介绍4、Ubuntu没有网络连接解决方法5、获取路由6、数据库端口 前言 以下介绍计算机常见的端口已经对应的网络协议,Linux中常用命令,以及平时运维中使用的排查网络故障的…...
【2025最新Java八股】redis中io多路复用怎么回事,和多线程的关系
io多路复用 IO 多路复用和多线程是两种不同的技术,他们都是用于改善程序在处理多个任务或多个数据流时的效率和性能的。 但是他俩要解决的问题不一样!IO多路复用主要是提升I/O操作的效率和利用率,所以适合 IO 密集型应用。多线程则是提升CP…...
Webview+Python:用HTML打造跨平台桌面应用的创新方案
目录 一、技术原理与优势分析 1.1 架构原理 1.2 核心优势 二、开发环境搭建 2.1 安装依赖 2.2 验证安装 三、核心功能开发 3.1 基础窗口管理 3.2 HTML↔Python通信 JavaScript调用Python Python调用JavaScript 四、高级功能实现 4.1 系统级集成 4.2 多窗口管理 五…...
Nginx HTTP 414 与“大面积”式洪水攻击联合防御实战
一、引言 在大规模分布式应用中,Nginx 常作为前端负载均衡和反向代理服务器。攻击者若结合超长 URI/头部攻击(触发 HTTP 414)与海量洪水攻击,可在网络层与应用层形成双重打击:一方面耗尽缓冲区和内存,另一…...
Oracle高级语法篇-集合操作
Oracle 集合操作详解 作为数据库领域的佼佼者,Oracle 提供了功能强大的集合操作符,它们能够合并多个查询的结果集,极大提升数据处理效率。接下来,本文将从基础知识点到实战案例,全方位剖析 Oracle 的集合操作。 一、…...
克服储能领域的数据处理瓶颈及AI拓展
对于储能研究人员来说,日常工作中经常围绕着一项核心但有时令人沮丧的任务:处理实验数据。从电池循环仪的嗡嗡声到包含电压和电流读数的大量电子表格,研究人员的大量时间都花在了提取有意义的见解上。长期以来,该领域一直受到对专…...
包含物体obj与相机camera的 代数几何代码解释
反余弦函数的值域在 [0, pi] 斜体样式 cam_pose self._cameras[hand_realsense].camera.get_model_matrix() # cam2world# 物体到相机的向量 obj_tcp_vec cam_pose[:3, 3] - self.obj_pose.p dist np.linalg.norm(obj_tcp_vec) # 物体位姿的旋转矩阵 obj_rot_mat self.ob…...
excel解析图片pdf附件不怕
背景 工作中肯定会有导入excel还附带图片附件的下面是我解析的excel,支持图片、pdf、压缩文件实现 依次去解析excel,看看也没有附件,返回的格式是Map,key是第几行,value是附件list附件格式都被解析成pdf格式Reader.jav…...
【Spring】依赖注入的方式:构造方法、setter注入、字段注入
在Spring框架中,除了构造器注入(Constructor Injection)和Setter注入(Setter Injection),还有一种依赖注入方式:字段注入(Field Injection)。字段注入通过在Bean的字段上…...
mybatis实现增删改查1
文章目录 19.MyBatis查询单行数据MapperScan 结果映射配置核心文件Results自定义映射到实体的关系 多行数据查询-完整过程插入数据配置mybatis 控制台日志 更新数据删除数据小结通过id复用结果映射模板xml处理结果映射 19.MyBatis 数据库访问 MyBatis,MyBatis-Plus…...
Git,本地上传项目到github
一、Git的安装和下载 https://git-scm.com/ 进入官网,选择合适的版本下载 二、Github仓库创建 点击右上角New新建一个即可 三、本地项目上传 1、进入 要上传的项目目录,右键,选择Git Bash Here,进入终端Git 2、初始化临时仓库…...
基于flask+vue框架的灯饰安装维修系统u49cf(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:用户,工单人员,服务项目,订单记录,服务记录,评价记录 开题报告内容 基于 FlaskVue 框架的灯饰安装维修系统开题报告 一、选题背景与意义 (一)选题背景 随着城市化进程的加速与居民生活品质的显著提升…...
【算法】BFS-解决FloodFill问题
目录 FloodFill问题 图像渲染 岛屿数量 岛屿的最大面积 被围绕的区域 FloodFill问题 FloodFill就是洪水灌溉的意思,假设有下面的一块田地,负数代表是凹地,正数代表是凸地,数字的大小表示凹或者凸的程度。现在下一场大雨&…...
GIS开发笔记(10)基于osgearth实现二三维地图的一键指北功能
一、实现效果 二、实现原理 获取视图及地图操作器,通过地图操作器来重新设置视点,以俯仰角 (0.0)和偏航角 (-90.0)来设置。 osgEarth::Util::Viewpoint(…) 这里创建了一个新的 Viewpoint 对象,表示一个特定的视角。构造函数的参数是: 第一个参数:是视角名称。 后面的 6 个…...
Spring Boot日志系统详解:Logback与SLF4J的默认集成
大家好呀!👋 今天我们来聊聊Spring Boot中一个超级重要但又经常被忽视的功能——日志系统! 一、日志系统的重要性 首先,咱们得明白为什么日志这么重要?🤷♂️ 想象一下,你正在玩一个超级复…...
【C++】Json-Rpc框架项目介绍(1)
项目介绍 RPC(Remote Procedure Call)即远程过程调用,是一种通过网络从远程计算机程序中请求服务而不需要了解底层网络实现细节的一种 协议 。 RPC(Remote Procedure Call)可以使用多种网络协议进行通信,如…...
Docker 部署 PostgreSQL 数据库
Docker 部署 PostgreSQL 数据库 基于 Docker 部署 PostgreSQL 数据库一、拉取 PostgreSQL 镜像二、运行 PostgreSQL 容器三、运行命令参数详解四、查看容器运行状态 基于 Docker 部署 PostgreSQL 数据库 一、拉取 PostgreSQL 镜像 首先,确保你的 Docker 环境已正确…...
用 Go 优雅地清理 HTML 并抵御 XSS——Bluemonday
1、背景与动机 只要你的服务接收并回显用户生成内容(UGC)——论坛帖子、评论、富文本邮件正文、Markdown 等——就必须考虑 XSS(Cross‑Site Scripting)攻击风险。浏览器在解析 HTML 时会执行脚本;如果不做清理&#…...
