EventBridge Scheduler 把成功的调用送进了死信队列
来源:dev.to — 2026-08-03
📋 概述
作者用 EventBridge Scheduler 定时调用 Bedrock AgentCore 跑 AI 求职搜索,却发现代理明明成功运行、邮件也收到了,调用却被标记失败进入死信队列。根因是 Scheduler 的 universal target 是同步的,约 30 秒后未收到响应就判定失败,而 AgentCore 的搜索要跑 30–75 秒。解决方案是把耗时的搜索改造成后台异步任务,入口立即返回“accepted”,并用 add_async_task 让运行时保持会话存活,彻底消除 DLQ。
🔑 核心要点
- 同步等待的坑:EventBridge Scheduler universal target 是同步调用,约 30 秒拿不到响应就判定失败
- 30 秒只是观测值:官方文档只写了配额,没写等待时长,应设计成“不要指望它久等”
- 异步返回 ack:入口立即返回 {"status":"accepted"},让搜索作为后台任务运行,Scheduler 秒回不 DLQ
- 保持会话存活:用 app.add_async_task 注册后台工作,/ping 报告 HealthyBusy,避免 15 分钟空闲被回收
- 任务引用:asyncio 弱引用 task,必须用 set 强引用防止中途被垃圾回收
💡 金句
Everything downstream worked. The only broken part was Scheduler's opinion of it.
👍 0
👎 0
← 返回 Dev.to 首页