欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在Go lang中发出非阻塞Http请求?》,这篇文章主要讲到等等知识,如果你对golang相关的知识非常感兴趣或者正在自学,都
欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在Go lang中发出非阻塞Http请求?》,这篇文章主要讲到等等知识,如果你对golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!
这是我学习 go lang 的第二天,我正在尝试弄清楚如何发出非阻塞 http 请求。
我正在使用 gin 框架,并且我有非常简单的代码,如下所示。
func main() {
r := gin.default()
r.get("test", func(c *gin.context){
request := gorequest.new()
_, body, _ := request.get("http://tmp.com").end()
c.JSON(200, body)
})
r.run()
}
tmp.com是本地服务器,需要0.5秒才能响应(我创建它是为了测试)
当我使用 wrk -t2 -c50 http://127.0.0.1:8080/test
在 go 服务器上进行简单的 ab 测试时,我每秒收到大约 8 个请求。
看起来请求被阻止。
我尝试将请求分离到一个函数中,然后用“go”调用它以使用协程,但这只是没有返回任何内容。
我修改后的代码是
func makeRequest(c *gin.Context) {
request := gorequest.New()
_, body, _ := request.Get("http://tmp.com").End()
c.jsON(200, body)
}
func main() {
r := gin.Default()
r.GET("test", func(c *gin.Context){
go makeRequest(c)
})
r.Run()
}
有没有一种简单的方法来发出非阻塞请求?或者在这种情况下最好的方法是什么?
正如已经回答的,每个 HTTP 请求都在它自己的 go 例程中处理。 HTTP 非常适合请求/响应模式。如果您确实需要通过 HTTP 进行异步通信,您可以使用回调函数。不过,我建议使用基于事件的消息传递。
终于介绍完啦!小伙伴们,这篇关于《如何在go lang中发出非阻塞http请求?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~编程网公众号也会发布Golang相关知识,快来关注吧!
--结束END--
本文标题: 如何在go lang中发出非阻塞http请求?
本文链接: https://www.lsjlt.com/news/595991.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0