gin 设置请求超时时间
时间: 2024-01-23 13:04:14 浏览: 254
在 gin 框架中,可以通过设置 `context.Context` 对象的超时时间来控制请求超时。可以使用 `context.WithTimeout()` 函数创建一个带有超时时间的上下文对象,并将其传递给处理请求的函数。
以下是示例代码:
```go
func myHandler(c *gin.Context) {
// 创建一个带有 5 秒超时时间的上下文对象
ctx, cancel := context.WithTimeout(c.Request.Context(), 5*time.Second)
defer cancel()
// 使用新的上下文对象处理请求
err := someLongRunningTask(ctx)
if err != nil {
c.AbortWithError(http.StatusInternalServerError, err)
return
}
c.JSON(http.StatusOK, gin.H{
"message": "Task completed successfully",
})
}
```
在上面的例子中,`context.WithTimeout()` 函数将当前请求的上下文对象作为参数,创建了一个新的带有 5 秒超时时间的上下文对象 `ctx`。然后将 `ctx` 作为参数传递给 `someLongRunningTask()` 函数,该函数执行一些耗时的任务。如果任务在超时时间内完成,则返回 `nil`,否则将返回一个超时错误。在任务完成后,将返回一个 JSON 响应。如果任务超时或出错,则中止处理并返回一个错误响应。
阅读全文