示例 | 使用回调获取任务结果的最佳实践
什么场景需要用到回调?
进度
或者结果
,但是假如我们不需要获取任务进度,而是仅需要获取任务的结果,并且轮询存在一定的延迟和资源消耗,我们就可以通过回调的形式来获取任务成功
或者失败
的结果怎么使用回调?
1.
callback
用于传一个任务执行成功后需要由触站AI调用请求的回调地址nonce
用于客户自定义的一个标识,在任务成功或者失败后,调用回调的时候会自动带上这个参数,用于调用方标识自己的业务ID(选填)2.
3.
callback
参数,使用POST
method+JSON
body的格式进行请求以下是一个典型的任务回调的工作过程
{ "prompt":"girl", "modelStyleId": 1, "callback":"https://exmaple.com/callback", "nonce": "123" }
{ // taskId仅在callback的参数中会返回 "taskId":"此次任务ID", // 由提交任务带上的参数,可以进行业务标识或者权限有效性判断 "nonce": "123", // 以下参数与原始获取任务详情接口返回的结果中的data一致 "state": "success", "progress": 1, "audit": 1, "imgUrl":"https://test.img.com/1.jpg" }
其他注意事项
1.
200http响应码
代表处理回调成功,返回非200的响应码
代表回调请求失败,回调失败后触站AI会在一定的周期内进行重试请求,最多尝试5次
,重试间隔时间依次递增5秒(比如第一次是5s后重试,第二次则是10s后,依次递增)2.
幂等
处理,防止产生因重复回调导致业务处理不正确的问题3.
10s
,请勿在回调处理中同步进行耗时的操作4.
callback
需要是标准的URL格式,支持ip:port
类型url,但是需要公网可以接收请求,不能是localhost
、127.0.0.1
、局域网IP
修改于 2024-07-20 10:00:20