周末给自己的小应用加了个文生图,估的是四十刀,账单一百八十六。不是哪张图特别贵,是客户端超时之后我的 worker 又重试了一遍,浏览器那边用户还手动重交了表单——我从头到尾只统计成功的请求,没统计尝试次数。
后来把幂等键挪到 web 入口生成,一路带着穿过所有重试,发字节之前先落一条 attempt 记录,再在队列前面加个每用户的尝试上限。上限替代不了账单告警,但至少能把一个失控的循环变成看得见、有边界的事故。
挑接口的标准也顺手改了:能不能自己给自己讲清楚一次请求的完整生命周期,能不能证明哪个请求产出了哪张图。临时 URL 只当交接用,字节必须自己抄进存储。契约测试固定三个 fixture:完成态、pending,还有一个格式坏掉的 200,最后这个抓到的集成 bug 比正常路径多多了。