触发器接口开发文档

收藏
我的收藏

介绍​

抖音云提供了触发器能力,开发者通过触发器可以实现定时周期性的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.若定时触发的接口逻辑需要高频调用和计算,建议定时触发的服务与业务服务隔离,额外新建定时触发的服务。​