gin的中间件中使用goroutine必须使用其只读副本c.Copy()
gin默认使用Logger 和 Recovery中间件
gin.Default()默认使用了Logger 和 Recovery中间件,其中:
Logger中间件将日志写入gin.DefaultWriter,即使配置了GIN_MODE=release。
Recovery中间件会recover 任何panic。如果有panic 的话,会写入5oo 响应码。
如果不想使用上面两个默认的中间件,可以使用gin.New()新建一个没有任何默认中间件的路由。
gin中间件中使用goroutine
当在中间件或handler中启动新的goroutine时,
不能使用原始的上下文(c*gin.Context),
必须使用其只读副本c.Copy()
middlewares\baseApiTime.go
package middlewares
import (
"fmt"
"time"
"github.com/gin-gonic/gin"
)
func UserHasLoginCheck(c *gin.Context) {
fmt.Println("中间件开始检查用户是否登录")
c.Set("userName", "admin")
// goroutine 必须使用其只读副本c.Copy()
cCp := c.Copy()
go func() {
time.Sleep(4 * time.Second)
fmt.Printf("完成啦,", cCp.Request.URL.Path)
}()
}
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号