如何在IBM Watson Studio的Python环境与本地Python程序间建立数据连接
IBM Watson Studio云环境与本地Python小数据交互方案
方案1:部署云侧函数为API端点(最适合少量数据单次传输)
这是官方推荐的轻量交互方式,无需依赖COS存储文件,直接通过HTTP请求传参和拿结果:
- 第一步:Watson Studio侧部署处理函数
在云侧Python环境中编写你的运算逻辑,支持直接接收整数、序列化后的numpy数组参数,示例代码如下:
写完后在Watson Studio中将该函数部署为无服务器API,获取API调用地址和鉴权密钥即可。import numpy as np import pickle import base64 def cloud_calculate(input_params): # 接收本地传入的两类参数 int_vars = input_params.get("int_list", []) # 反序列化numpy数组 np_arr = pickle.loads(base64.b64decode(input_params["np_arr_b64"])) # 这里替换成你自己的运算逻辑 result = np.mean(np_arr) + sum(int_vars) # 结果序列化返回 return {"calculate_result": float(result)} - 第二步:本地Python侧调用API传参
本地直接用requests库发起请求,把参数序列化后传输即可,示例代码如下:
如果你担心import requests import numpy as np import pickle import base64 # 替换成你自己部署的API信息 API_ENDPOINT = "你的Watson Studio API访问地址" API_TOKEN = "你的API鉴权密钥" # 准备要上传的参数 test_int_list = [2, 4, 6] test_np_arr = np.array([1, 3, 5, 7, 9]) # 序列化numpy数组为base64字符串方便传输 np_arr_b64 = base64.b64encode(pickle.dumps(test_np_arr)).decode() # 发起请求 response = requests.post( API_ENDPOINT, headers={"Authorization": f"Bearer {API_TOKEN}"}, json={ "int_list": test_int_list, "np_arr_b64": np_arr_b64 } ) # 直接获取返回结果 print("云侧运算结果:", response.json()["calculate_result"])pickle的安全风险,1000个元素以内的numpy数组可以直接转成Python列表,用原生JSON传输即可,不需要序列化。
方案2:WebSocket长连接(适合频繁交互场景)
如果你需要多次、高频传输参数拿结果,不想每次调用API的额外开销,可以用WebSocket建立长连接:
- 云侧Watson Studio安装
websockets依赖后,启动轻量WebSocket服务:
对端口做公网映射后,本地用WebSocket客户端直接连接传输参数即可。import asyncio import websockets import numpy as np import json async def handle_request(websocket): async for msg in websocket: data = json.loads(msg) int_list = data["int_list"] np_arr = np.array(data["np_arr"]) # 运算逻辑替换 res = np.sum(np_arr) * sum(int_list) await websocket.send(json.dumps({"res": float(res)})) async def main(): async with websockets.serve(handle_request, "0.0.0.0", 8765): await asyncio.Future() asyncio.run(main())
注意事项
- 传输敏感数据时必须在API或WebSocket层加鉴权逻辑,避免未授权访问
- 单个数组元素超过1000个的场景还是建议用COS传输,避免请求超时
pickle序列化仅推荐在你完全控制两端代码的场景使用,避免执行恶意序列化内容
内容的提问来源于stack exchange,提问作者lalakersfan29
相关产品推荐
相关产品推荐

