AI Agent优雅关闭:正在执行的任务别半路杀掉

📘 AI教程 💬 🔥 Trending

🩺 摘要

重启Agent时正在运行的任务被硬中断——用户等了几分钟,最后看到「服务重启「四个字。优雅关闭让当前任务执行完再停。

📝 详情

一个用户正在等Agent分析一份10页的PDF,分析到第8页时我重启了服务——用户的请求断了。不会再有第二次了。

优雅关闭怎么做

import signal
import asyncio

class AgentServer:
    def __init__(self):
        self.shutting_down = False
        self.active_tasks = set()

    async def shutdown(self, sig, frame):
        self.shutting_down = True
        # 等待所有活跃任务完成(最多30秒)
        wait_for = asyncio.wait(self.active_tasks, timeout=30)
        await wait_for
        # 然后退出
        loop.stop()

三种关闭策略

1. 立即关闭(不推荐) 当前任务全部中断。用户感觉到的是"断了"。

2. 优雅关闭(推荐) 不再接收新请求,当前任务执行完再停。用户无感知。

3. 超时关闭 最多等30秒,还完不成的标记为失败并通知用户。

总结

优雅关闭不是可选项,是生产环境的基本要求。谁都不想等了几分钟的回答突然断了。30秒的等待时间换用户的信任,值得。