在Pyscript页面集成OpenAI API时请求超时问题排查
问题分析与解决方案
核心问题1:异步函数中调用同步API请求
你的send函数标记为async,但调用client.chat.completions.create时使用的是同步客户端,未处理浏览器环境下的阻塞问题。Pyscript运行在浏览器Python沙箱中,同步网络请求会阻塞事件循环,被浏览器强制终止,直接导致超时。
核心问题2:代码中的未定义变量
代码里console.log(f"Data: {messages}")的messages、console.log(reply)的reply均未定义,会引发错误中断执行流程。
核心问题3:超时参数未生效
同步客户端的timeout参数在Pyscript环境中无法正确生效,需改用异步客户端配合合适的超时配置。
核心问题4:SSL兼容性冲突
Pyscript自带的SSL库与OpenAI API的证书验证存在兼容问题,可能导致请求无法建立连接。
修正后的代码示例
@when('click', '#summary-btn') async def send(event=None): Element('summarybrief').write("Send function successfully called.") userElement = js.document.getElementById('brief') OPENAI_API_KEY = userElement.value.strip() # 使用异步客户端适配浏览器事件循环 from openai import AsyncOpenAI client = AsyncOpenAI(api_key=OPENAI_API_KEY, timeout=60.0, max_retries=3) # 临时解决SSL证书兼容问题(调试用,生产环境建议配置合法CA证书) import ssl ssl._create_default_https_context = ssl._create_unverified_context # 转换摘要列表为带换行标签的字符串 global similar_items similar_items_str = "" for index, row in similar_items.iterrows(): similar_items_str += f"Title: {row['Title']}<br>Summary: {row['Summary']}<br>Note: {row['Note']}<br><br>" payload = f"请生成一份500字左右的叙述性总览,使用<br>标签换行:{similar_items_str}" try: # 异步调用API必须加await chat_completion = await client.chat.completions.create( messages=[ { "role": "user", "content": payload } ], model="gpt-4o", ) # 正确提取回复内容 reply_content = chat_completion.choices[0].message.content # 渲染到页面 Element('summarybrief').element.innerHTML = reply_content # 调试日志 console.log(f"Response: {reply_content}") except Exception as e: # 捕获并显示错误信息 Element('summarybrief').write(f"请求失败:{str(e)}") console.log(f"错误详情:{str(e)}")
关键优化点说明
- 改用AsyncOpenAI客户端:异步客户端适配浏览器事件循环,配合
await关键字避免阻塞,从根源解决超时问题。 - 修复变量错误:移除未定义变量的引用,确保代码执行流程完整。
- SSL兼容处理:临时禁用证书验证(仅调试),生产环境可指定Pyscript环境中可用的CA证书路径。
- Payload格式优化:直接在摘要拼接时使用
<br>标签,减少Prompt处理复杂度。 - 异常捕获机制:添加
try-except块,精准定位API密钥错误、网络问题等具体故障。
额外建议
- 在Pyscript的
<py-env>中明确指定依赖版本,避免版本兼容问题:<py-env> - openai>=1.30.0 </py-env> - 若仍存在超时,可尝试拆分大Payload为多个请求,或进一步提高
max_retries参数值。
内容的提问来源于stack exchange,提问作者Mark Bailey
相关产品推荐
相关产品推荐

