基于華為云 ModelArts 的在線服務應用開發(Requests 模塊)

基于華為云 ModelArts 的在線服務應用開發(Requests 模塊)


一、本節目標

  1. 了解并掌握 Requests 模塊的特點與用法
  2. 學會通過 Python+Requests 訪問華為云 ModelArts 在線推理服務
  3. 熟悉 JSON 模塊在 Python 中的數據序列化與反序列化
  4. 掌握 Python 文件 I/O 的基本操作
  5. 演示一個基于華為云 ModelArts + PyQt 的花卉分類桌面應用案例

二、Requests 模塊簡介與特點

  • 簡介

    • requests 是 Python 第三方庫,用于發送 HTTP/HTTPS 請求

    • 安裝命令:

      pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
      
  • 主要特點

    1. 簡單易用:人性化 API,幾行代碼即可完成請求
    2. 支持 HTTPS:自動驗證 SSL 證書
    3. 支持 Cookies:自動管理會話狀態
    4. 支持文件上傳files 參數上傳本地文件
    5. 支持會話管理requests.Session() 跨請求保持連接和 Cookie

三、HTTP 協議基礎

  • 什么是 HTTP?
    • 超文本傳輸協議(HTTP)是基于 TCP 的請求–響應協議
    • 典型事務流程:
      1. 客戶端(瀏覽器或腳本)與服務器建立 TCP 連接
      2. 客戶端發送 HTTP 請求
      3. 服務器處理請求并返回響應
      4. 連接關閉或復用
  • TCP/IP 七層模型(應用層:HTTP)
  • 常見狀態碼
    • 2xx 成功:200 OK, 201 Created
    • 3xx 重定向:301 Moved Permanently
    • 4xx 客戶端錯誤:400 Bad Request, 401 Unauthorized, 404 Not Found
    • 5xx 服務器錯誤: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 內置模塊 json

    import 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 編碼簡介

  • 用途

    1. 減少 HTTP 請求數,將小圖片直接嵌入 HTML/CSS/JS
    2. 簡單“加密”傳輸(非安全加密)
    3. 適合小圖標、背景圖
  • 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 實現花卉分類桌面應用案例

  1. 環境準備

    pip install PyQt5 requests apig-sdk
    
  2. 界面設計

    • 一個按鈕:選擇本地圖片
    • 一個 QLabel:顯示加載的圖片
    • 一個 QTextEdit:展示分類結果
  3. 工作流程

    1. 點擊“打開圖片” → 彈出文件對話框 → 讀取并顯示圖片
    2. 將圖片通過 Requests 調用 ModelArts 接口 → 解析 JSON
    3. 在結果框中按置信度從高到低顯示:類別 + 得分
  4. 核心代碼示例

    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_()
    
  5. 運行python flower_app.py,即可體驗離線 GUI + 在線推理相結合的完整流程。


溫馨提示

  • 調試時可在命令行打印 resp.textresp.status_code,快速定位簽名或網絡錯誤
  • PyQt 界面可按需擴充:增加進度條、錯誤提示、模型選擇等
  • 在生產環境中,注意對 AK/SK 做妥善管理,不要硬編碼在腳本中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python pymysql如何保證數據庫更新成功

python pymysql如何保證數據庫更新成功 在使用Python的PyMySQL庫與MySQL數據庫交互時,確保數據庫更新操作成功執行,可以通過以下幾種方式: 使用execute()和commit() 當執行一個更新(UPDATE)、插入(INSERT)或刪除(DELETE)操作時,你需要調用execute()方法來執行SQL語句…

【數據可視化-30】Netflix電影和電視節目數據集可視化分析

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

【深度強化學習 DRL 快速實踐】逆向強化學習算法 (IRL)

Inverse Reinforcement Learning (IRL) 詳解 什么是 Inverse Reinforcement Learning? 在傳統的強化學習 (Reinforcement Learning, RL) 中,獎勵函數是已知的,智能體的任務是學習一個策略來最大化獎勵 而在逆向強化學習 (Inverse Reinforc…

入侵檢測系統(IDS)與入侵防御系統(IPS):功能對比與部署實踐

入侵檢測系統(IDS)與入侵防御系統(IPS):功能對比與部署實踐 在網絡安全防御體系中,入侵檢測系統(Intrusion Detection System, IDS)與入侵防御系統(Intrusion Preventio…

P12167 [藍橋杯 2025 省 C/Python A] 倒水

P12167 [藍橋杯 2025 省 C/Python A] 倒水 題目描述 小藍有 n n n 個裝了水的瓶子,從左到右擺放,第 i i i 個瓶子里裝有 a i a_i ai? 單位的水。為了美觀,小藍將水循環染成了 k k k 種顏色,也就是說,第 i i i …

短視頻矩陣系統可視化剪輯功能開發,支持OEM

在短視頻營銷與內容創作競爭日益激烈的當下,矩陣系統中的可視化剪輯功能成為提升內容產出效率與質量的關鍵模塊。它以直觀的操作界面和強大的編輯能力,幫助創作者快速將創意轉化為優質視頻。本文將結合實際開發經驗,從需求分析、技術選型到核…

制作一款打飛機游戲22:表格導出

編輯器功能擴展 今天,我想讓編輯器能夠處理一個數組,這是編輯器將要編輯的東西,它只編輯數組。這些區域在后續的不同版本的編輯器中會有不同的含義,但現在我想創建一個模板,能夠加載一個二維數組,并將二維…

AI數據分析的利器:解鎖BI工具的無限潛力

在數字化浪潮席卷全球的今天,數據已成為企業最寶貴的資產之一。如何高效、準確地分析這些數據,挖掘其中的價值,成為企業決策的關鍵。AI數據分析,作為新時代的數據分析利器,正逐漸改變著企業的決策方式。而BI&#xff0…

【每天一個知識點】IPv4(互聯網協議版本4)和IPv6(互聯網協議版本6)

IPv4(互聯網協議版本4)和IPv6(互聯網協議版本6)是用于在互聯網上標識和定位設備的兩種主要協議。它們的主要區別在于地址空間、結構、以及一些附加功能。以下是兩者的對比: 1. 地址長度 IPv4: 地址長度為32位&#xf…

numpy.random.normal與numpy.random.randn的區別與聯系

先說結論: numpy.random.normal 對應的是 正態分布,numpy.random.randn 對應的是標準正態分布,所以 numpy.random.randn 是 numpy.random.normal 的一個特例。 1. numpy.random.normal 從正態(高斯)分布中抽取隨機樣…

基于 EFISH-SBC-RK3588 的無人機智能巡檢終端方案?

一、硬件架構設計? ?核心算力平臺(EFISH-SBC-RK3588)? ?異構計算能力?:搭載 8 核 ARM 架構(4Cortex-A762.4GHz 4Cortex-A551.8GHz),集成 6 TOPS NPU 與 Mali-G610 GPU,支持多傳感器數據并…

軟測面經(私)

測試流程 分析需求——>制定測試計劃——>設計測試用例——>執行測試——>編寫測試報告 黑盒測試 等價類劃分、邊界值分析法、猜錯法、隨機數法、因果圖。 白盒測試 代碼檢查法、程序變異、靜態結構分析法、靜態質量度量法、符號測試法、邏輯覆蓋法、域測試、…

那些年踩過的坑之Arrays.asList

一、前言 熟悉開發的兄弟都知道,在寫新增和刪除功能的時候,大多數時候會寫成批量的,原因也很簡單,批量既支持單個也支持多個對象的操作,事情也是發生在這個批量方法的調用上,下面我簡單說一下這個事情。 二…

通過VIN車輛識別代碼查詢_精準版API,獲取車輛精準參數

通過17位VIN碼的精準匹配,幫助用戶快速獲取車輛的品牌、型號、出廠日期、排量、外觀、車輛型號等詳細參數。這一API廣泛應用于二手車交易、車輛租賃、配件采購和車輛維修等領域,為用戶提供一個高效、準確的解決方案。 代碼示例 返回格式:js…

Virtuoso ADE采用Spectre仿真中出現MOS管最小長寬比滿足要求依然報錯的情況解決方法

在ADE仿真中錯誤問題如下: ERROR (CMI-2440): "xxx.scs" 46338: I2.M1: The length, width, or area of the instance does not fit the given lmax-lmin, wmax-wmin, or areamax-areamin range for any model in the I2.M3.nch_hvt group. The channel w…

LeetCode hot 100—最長有效括號

題目 給你一個只包含 ( 和 ) 的字符串,找出最長有效(格式正確且連續)括號子串的長度。 示例 示例 1: 輸入:s "(()" 輸出:2 解釋:最長有效括號子串是 "()"示例 2&#xf…

Vue3集成sass

安裝依賴 pnpm add -D sass-embedded配置全局變量 新建文件 src/styles/variables.scss配置Vite 修改 vite.config.ts variables.scss $base-color: bluevite.config.ts // https://vite.dev/config/ export default defineConfig({plugins: [vue(),],resolve: {alias: {:…

【力扣題目分享】棧專題(C++)

目錄 關于棧的題目: 1. 最小棧: 思路: 實現代碼(最終): 2. 棧的壓入、彈出序列: 思路: 實現代碼: 3. 逆波蘭表達式求值: 思路: 實現代碼: 深入了解…

Office 2019 (含Visio+Project)官方IOS 下載

Microsoft Office 2019 是微軟公司推出的一款辦公軟件套裝, 主要包括Word、Excel、PowerPoint、Outlook、Visio、Access、Publisher、OneDrive for Business 和Skype for Business等組件。 這些組件適用于Windows和MacOS平臺,支持多種語言&#xff0c…

遙測終端機,推動灌區流量監測向數據驅動躍遷

灌區范圍那么大,每一滴水怎么流都關系到糧食夠不夠吃,還有生態能不能平衡。過去靠人工巡查、測量,就像拿著算盤想算明白大數據,根本滿足不了現在水利管理的高要求。遙測終端機一出現,就像給灌區流量監測安上了智能感知…