中断不会取消云端推理 | AI生成和翻译

Home 2025.08

当你在 Python 脚本等待 generate_images() 调用时中断(例如使用 Ctrl-C),大致会发生以下情况:

  1. 客户端行为
    • 一旦终止 Python 进程,底层的 HTTP/gRPC 连接就会断开。
    • GenAI 客户端库通常会捕获管道破裂或连接重置错误,并引发异常(你会在脚本中看到)。
  2. Google 端的情况
    • 在你取消时,你的请求已经到达 Google 的推理服务并进入队列(或已开始运行)。
    • 大多数云端推理端点不会因为客户端断开而自动取消工作。它们会继续运行你的图像生成任务直至完成(消耗 GPU/TPU 资源并产生计费),尽管没有存活的连接来返回结果。
    • 任务完成后,生成的图像会被丢弃——除非你设置了长时间运行的操作或 Webhook,否则不会有回调。
  3. Nginx(或其他代理)的作用
    • 如果推理服务前有 Nginx 反向代理,其默认行为是监视客户端连接。一旦客户端中止,Nginx 会关闭其与上游推理进程的连接(发送 FIN/RST)。
    • 上游进程最终尝试写入响应时,会看到损坏的套接字。此时它可能会记录 I/O 错误,但关键的是,它不会回退并停止你请求的计算;它只是无法传递字节。
    • 你可以调整 Nginx 的 proxy_ignore_client_abort 指令——如果设置为 on,Nginx 会在客户端断开后仍保持上游连接(这允许你完全完成日志写入或其他清理工作)。
  4. 脚本的关键要点

    • 中断不会“撤销部署” 或取消 Google 服务器上的模型——你仍需为完整的推理付费。
    • 如果你需要可取消的推理,必须使用不同的模式:例如,

      1. 提交非阻塞的批处理或长时间运行的操作,
      2. 通过单独的 API 调用轮询其状态或显式取消。

简而言之:在 5 秒时终止脚本会停止本地等待并关闭套接字,但 Google 的推理仍会在其硬件上运行完成(而 Nginx 或类似工具在响应准备就绪后,只会将其丢弃到无处)。


Back Donate