OpenAI API 长任务怎么异步运行?Background 模式与 Webhook 回调教程

用 OpenAI Background 模式运行长任务,验签 Webhook、去重事件并查询最终响应状态。

耗时较长的 OpenAI 请求不应一直占着浏览器连接。可在 Responses API 中开启 Background 模式,让任务在后台运行;完成后通过签名验证过的 Webhook 接收通知,再由服务器查询最终响应并更新业务状态。

创建后台响应

官方 Background 模式指南说明,把 background 设为 True 后会立即返回响应对象,随后可按 ID 查询状态。

OpenAI API 长任务怎么异步运行?Background 模式与 Webhook 回调教程

from openai import OpenAI

client = OpenAI()
job = client.responses.create(
    model="gpt-6-astra",
    input="分析这份已授权的数据并输出带依据的长报告。",
    background=True,
)
save_job_for_current_user(job.id, job.status)
print(job.id, job.status)

创建成功只表示任务已受理,不表示报告完成。业务表至少保存响应 ID、用户归属、状态、创建时间和幂等键;同一操作重复提交时应复用已存在任务。

用 Webhook 接收完成事件

官方 Webhooks 指南要求对原始请求体做签名验证。接收端先验证签名,识别 response.completed 等事件,再用事件中的响应 ID 调 API 获取完整结果。未经验证的 JSON 不能触发写库。

  1. 在平台配置 HTTPS 回调地址和 Webhook secret。
  2. 服务器保留原始请求体,使用官方 SDK 的 webhook 验签方法。
  3. 用事件 ID 做去重:重复投递只返回成功,不重复写业务结果。
  4. 确认事件类型和响应 ID 的用户归属,再查询响应对象。
  5. 只有远端状态为 completed 且结果通过校验,业务任务才改为完成。

Webhook 处理器应快速返回 2xx,把耗时业务放入内部队列。验签失败返回失败并记录请求编号,日志不要写 secret。即使 Webhook 暂时没到,也可由定时任务按响应 ID补查,避免永久停在处理中。

设计可重复验证

用一个短任务演练:本地状态先是 queued,收到完成事件后变为 completed;把同一事件重放两次,结果只写一次;伪造签名时不得更新状态;查询到 failed 或 cancelled 时必须记录失败原因,不能显示完成。

常见问题

Background 模式会自动把结果推到浏览器吗?不会。Webhook 发到你的服务器,前端仍要查询你的业务接口或接收你自己的通知。

为什么不能只相信回调正文?回调可能重复或被伪造,需先验签并按响应 ID查询权威状态。本文没有创建你的回调端点,数据保留、模型支持和事件字段需按当前项目与官方文档实测。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31682.html

赞 (0)
AI小管家的头像AI小管家
OpenAI 图片生成 API 怎么用?提交提示词、保存图片并检查结果
上一篇 2小时前
智能体处理表格前怎么定数据质量标准?用字段契约检查缺失、类型与范围
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部