You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行Streamlit集成摘要代码反复报超时错误求助

问题排查与修复方案

你遇到的the write operation timeout错误可从以下几个环节逐一排查修复:

1. 谷歌云存储上传环节超时(最常见诱因)

你的代码中upload_blob方法没有设置超时参数,大体积音频文件上传时很容易触发写入超时,调整方案:

  • 给blob.upload_from_filename方法增加超时配置,修改代码如下:
# 修改upload_blob函数内的上传代码
blob.upload_from_filename(source_file_name, timeout=3600) # 按音频大小可调整为更大值
  • 额外检查你的GCS存储桶区域和本地网络的连通性,可提前测试同区域下的小文件上传速度。

2. 谷歌云Speech长时转写超时

你当前设置的operation.result(timeout=10000)是固定等待超时,实际长音频转写建议采用官方默认的轮询机制而非硬设超时,调整方案:

  • 去掉固定timeout参数,修改为:
# 替换原response = operation.result(timeout=10000)
response = operation.result() # 自动遵循谷歌云默认的长时任务重试/轮询规则
  • 若你的音频时长超过60分钟,需确认你开通了谷歌云Speech的长音频转写权限,同时确保上传到GCS的音频文件无损坏。

3. Streamlit服务本身超时

你提到是本地运行的Streamlit应用,Streamlit默认的服务请求超时为300秒,长任务运行时很容易触发超时,调整方案:

  • 启动Streamlit时增加超时参数配置,启动命令改为:
streamlit run your_app_name.py --server.timeout 3600
  • 建议将音频转写、摘要生成两个重耗时任务改为异步执行,避免阻塞主线程触发超时。

4. 代码逻辑bug修复

你的现有代码存在几处逻辑错误也会间接引发运行异常导致超时:

  • generate_summary函数末尾缩进错误,你当前把generate_summary()写在了函数内部,会导致无限递归调用,直接卡死程序触发超时,需要把这行代码移到函数外部,按业务逻辑调整调用时机。
  • replaced_tags = data["summary"].replace(...) 一行中data变量没有定义,你实际应该用的是生成的summary变量,改为:
replaced_tags = summary[0].replace("<s>","<p>").replace("</s>","</p>")
  • 若你的本地设备没有英伟达GPU,.to("cuda")会报错导致程序异常,建议增加设备判断:
device = "cuda" if torch.cuda.is_available() else "cpu"
input_ids = tokenizer(LONG_ARTICLE, return_tensors="pt").input_ids.to(device)
model = LEDForConditionalGeneration.from_pretrained("patrickvonplaten/led-large-16384-pubmed", return_dict_in_generate=True).to(device)

内容的提问来源于stack exchange,提问作者Rosheen Abbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:18:04