触发器接口开发文档
收藏
我的收藏介绍
抖音云提供了触发器能力,开发者通过触发器可以实现定时周期性的HTTP任务。本文将介绍开发者如何开发一个触发器HTTP接口。
接口开发
定时触发器以 HTTP POST 请求的方式从公网调用服务,参数格式为
content-type: application-json
,参数内容为触发器当前配置的参数。- •服务接口需实现为 POST 方法。
- •如需获取参数,需处理 JSON 格式转换。
- •接口处理时长目前最多 60s,超时无法获取返回状态,且可能中断执行。
- •接口不建议实现异步程序,实例缩容时无法感知,可能中断执行。
日志输出
- •抖音云目前支持采集标准输出流日志(stdout),服务每次请求都会注入 logid,通过将该 logid 值写入日志,即可跟踪查询定时触发器调用接口的日志。
- •logid 通过 HTTP Header 中的
x-tt-logid
字段获取。示例
- •
- •服务接口代码(Go语言):代码中实现了获取 logid,输出 logid + 请求 body,并正常返回数据(状态码为200)。注意 logid 和其他内容之间需有空格,否则可能无法实现查询。
// HelloWorldHandler hello world 接口 func HelloWorldHandler(w http.ResponseWriter, r *http.Request) { logId := r.Header["X-Tt-Logid"] body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Fprint(w, "internal error") return } // 日志打印logid和请求的body信息 fmt.Printf("logId=%s body=%s\n", logId, string(body)) // 接口返回数据 fmt.Fprint(w, "hello world!") }
- •
- •可以看到包含该次触发记录对应 logid 的日志(日志统计可能有时延,可在触发1-2分钟后再查询日志)。
注意事项
- 1.定时触发器调用服务接口,将占用服务的部分网络流量,同务接口执行将占用服务的计算资源,为避免影响线上服务,建议将触发时间配置在业务流量低峰时,同时接口逻辑不进行过多计算和IO操作。
- 2.定时触发的接口执行目前最长支持60s,超时后请求将中断报错;当服务实例无请求时,可能会被收回,建议服务接口执行不超过60s,同时不产生异步任务。
- 3.若定时触发的接口逻辑需要高频调用和计算,建议定时触发的服务与业务服务隔离,额外新建定时触发的服务。