iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何在go lang中发出非阻塞http请求?
  • 426
分享到

如何在go lang中发出非阻塞http请求?

2024-04-05 00:04:37 426人浏览 泡泡鱼
摘要

欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在go lang中发出非阻塞http请求?
    欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在go lang中发出非阻塞http请求?》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都...
    99+
    2024-04-05
  • 如何在 Go 中非阻塞地监听服务器端 websocket
    问题内容 我使用 https://pkg.go.dev/golang.org/x/net/websocket 来创建服务器端 websocket。通过它进行的所有通信均采用 json ...
    99+
    2024-02-08
  • 如何在python中实现异步非阻塞
    这篇文章给大家介绍如何在python中实现异步非阻塞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、说明当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用...
    99+
    2023-06-15
  • go中通过tcp连接发出http请求
    php小编草莓将为大家介绍如何在Go语言中通过TCP连接发出HTTP请求。在网络开发中,我们常常需要与其他服务器进行通信,并获取数据或发送请求。Go语言提供了丰富的标准库,其中包含了用...
    99+
    2024-02-09
    go语言 标准库
  • 如何在 Golang 中对 io.PipeRaeder 进行非阻塞 Read()
    在 Golang 中,io.PipeReader 是一个常用的读取器,但它的 Read() 方法在没有数据可读时会阻塞程序的执行。那么如何实现对 io.PipeReader 进行非阻塞...
    99+
    2024-02-10
  • PHP中如何发送HTTP请求?
    PHP是一门广泛使用的编程语言,它支持发送HTTP请求。发送HTTP请求可以用于与远程服务器通信,从而获取或发送数据。在本篇文章中,我们将讨论PHP中如何发送HTTP请求。发送HTTP请求的方式有多种,包括使用curl库、file_get_...
    99+
    2023-05-24
    PHP发送HTTP请求 HTTP请求方法 PHP HTTP客户端
  • HTTP请求:如何在Bash中发送它们?
    HTTP请求是在Web开发中非常常见的一个概念。它允许我们向Web服务器发送请求,并获取响应。在本文中,我们将介绍如何使用Bash发送HTTP请求。 Bash是一种Unix Shell,它提供了一种在命令行中执行操作的简单方式。这使得Ba...
    99+
    2023-08-15
    path bash http
  • Node.js中如何发起HTTP请求
    这篇文章主要介绍Node.js中如何发起HTTP请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正文Node.js HTTPS ModuleNode.js在标准库中带有https模...
    99+
    2024-04-02
  • 如何在 Go 中使用不记名令牌发出请求
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在 Go 中使用不记名令牌发出请求》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在...
    99+
    2024-04-04
  • 如何在 go lang 中导出变量/属性
    哈喽!今天心血来潮给大家带来了《如何在 go lang 中导出变量/属性》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错...
    99+
    2024-04-04
  • 在 Go 中发出 HTTP GET 请求时出错:“dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionr
    在Go语言中,当我们尝试发送HTTP GET请求时,有时会遇到名为“dial tcp: lookup api.ipify.org on: 53: read udp: 50975->...
    99+
    2024-02-10
    go语言
  • C++ 函数在网络编程中如何实现非阻塞 I/O?
    c++++中使用非阻塞i/o 进行网络编程可以显著提升应用程序的响应能力和吞吐量。原理:使用异步i/o操作,应用程序在发出i/o请求后继续执行,内核完成操作后生成事件通知应用程序。实现:...
    99+
    2024-04-27
    网络编程 非阻塞 i/o c++
  • Golang中如何利用非阻塞IO提升高并发响应速度?
    问题: 如何在 go 中利用非阻塞 i/o 提升响应速度?答案:非阻塞 i/o 允许 goroutine 在 i/o 操作完成之前继续执行其他任务。通过使用 net.dialer 和 n...
    99+
    2024-05-11
    golang 非阻塞io
  • Java中出现HTTP请求超时如何处理
    这篇文章给大家介绍Java中出现HTTP请求超时如何处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在发送POST或GET请求时,返回超时异常处理办法:捕获 SocketTimeoutException | Conn...
    99+
    2023-06-14
  • Go语言如何使用标准库发起HTTP请求
    本篇内容介绍了“Go语言如何使用标准库发起HTTP请求”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HTTP请求的基本结构在发起HTTP请求...
    99+
    2023-07-05
  • Go开发-使用Goroutine如何控制HTTP请求的并发量
    一、明确需求 我们使用 go 并发调用接口发起 HTTP 请求时,只需要在 func() 前面加上 go 关键字就很容易完成了,就是因为让并发变得如此简单,所以有的时候我们就需要控制一下并发请求的数量。 现在有个需求:本地有一千万条手机号,...
    99+
    2024-04-02
  • 如何在Go中进行Post请求
    近年来,Go语言(也称为Golang)在企业级开发中变得越来越流行。它追求高效率、高并发和高性能,使它成为Web应用程序和API开发的首选语言之一。本文将深入了解如何在Go中进行Post请求,让我们一起来看看吧。Go语言提供了一个标准包“n...
    99+
    2023-05-14
  • Android中HTTP请求中文出现乱码如何解决
    Android中HTTP请求中文出现乱码如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android中HTTP请求中文乱码解决办法 编码参数List<N...
    99+
    2023-05-30
    android http
  • 如何在 PHP 中使用 JavaScript 进行 HTTP 请求?
    在现代 Web 开发中,经常需要使用 JavaScript 发送 HTTP 请求来获取数据。在某些情况下,需要在 PHP 中执行此操作。本文将探讨如何在 PHP 中使用 JavaScript 发送 HTTP 请求。 一、使用 XMLHtt...
    99+
    2023-11-07
    http apache javascript
  • 在Go语言中如何解决并发网络请求的请求路由和请求过滤问题?
    在Go语言中如何解决并发网络请求的请求路由和请求过滤问题?在Go语言中,通过使用goroutine和channel的方式可以很方便地实现并发网络请求。但是在实际应用中,我们经常会遇到请求路由和请求过滤的问题,即不同的请求需要调用不同的处理函...
    99+
    2023-10-22
    Go语言 并发 请求路由 关键词:
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作