http请求会自动重试吗?

2023-11-21

我正在尝试使用 GoLang 将数据推送到 apache 服务器。假设我的apache服务器暂时停止了。然后我的http请求会自动重试。 我正在使用这个声明

resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return errors.Wrap(err, "http request error")
    }

我无法继续进行,因为我认为我的执行被困在这里。我反复收到此错误。


不,您需要实现自己的重试方法,这是一个可以给您一个想法的基本示例:

https://play.golang.org/p/_o5AgePDEXq

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    var (
        err      error
        response *http.Response
        retries  int = 3
    )
    for retries > 0 {
        response, err = http.Get("https://non-existent")
        // response, err = http.Get("https://google.com/robots.txt")
        if err != nil {
            log.Println(err)
            retries -= 1
        } else {
            break
        }
    }
    if response != nil {
        defer response.Body.Close()
        data, err := ioutil.ReadAll(response.Body)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Printf("data = %s\n", data)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

http请求会自动重试吗? 的相关文章

  • Golang Appengine 项目无法构建

    我有一个使用 golang 的应用程序引擎项目 我已经大约一年没有碰过了 我现在无法让它在之前构建的机器上构建 我收到以下错误 go app builder 解析输入失败 解析器 src golang org x net internal
  • Go SQL查询不一致

    我在执行查询时遇到一些非常奇怪的不一致 并且想知道是否有人知道原因 想象一下我有一个定义如下的结构 type Result struct Afield string db A Bfield interface db B Cfield str
  • GET 和 POST 方法的单独 Flask 路由

    在 Flask 中定义路由时 最好的做法是使用由多个 HTTP 方法定义的单个路由 并在该单个路由中使用显式逻辑处理不同的 HTTP 方法 例如 app route api users methods GET POST def users
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • “双点”可以作为 URL 路径部分的一部分吗

    在 URL 中使用父目录双点是否有效且安全 如下例所示 http example com path to file jpg RFC3986 https www rfc editor org rfc rfc3986定义 URI 它描述了路径如
  • 如何通过 HTTP POST 发送充满对象的 NSArray?

    我在 iPhone 端有一个产品 购物清单 由具有名称 product id 等的产品对象组成 我希望将此列表发送到服务器 在那里我将服务器上的列表与 iphone 中的列表进行比较 以合并所做的更改并将合并的列表发送回 iphone 如何
  • 在 Ubuntu 12.04 上的 Apache 上配置 SVN 服务器

    我正在尝试通过 HTTP 访问现有的 Subversion 服务器 我的dav svn conf文件看起来像
  • Angular4如何使用flatMap链接forkJoin

    我所处的情况是 我需要进行 5 个可以并行执行的 http 调用 在这五个调用之后需要执行另一个 http 调用 我在前 5 个中使用了 forkJoin 但我不知道如何链接 flatMap 或其他函数 forkJoin firstObse
  • 取消用户特定的 goroutine [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个应用程序 网络应用程序 允许用户使用 twitter oauth 登录并提供自动推文删除功能 用户登录到 Web 应用程序后
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • Go 中的 WebP 编码器/解码器

    是否有一个完整的 WebP 编码器和解码器与当前每周 或可分叉 兼容 它的速度与标准 png 相当吗 这个人在 GitHub 上有一个包 其中包含 WebP 的编码器和解码器 https github com chai2010 webp h
  • Golang 按位运算以及一般字节操作

    我有一些 C 代码 可以对字节执行一些按位运算 我正在尝试在 golang 中做同样的事情 但遇到了困难 C 中的示例 byte a c byte data int j c data j c byte c j c a c 0xFF c 0x
  • HTTP 和 HTTPS iframe

    我正在创建一个小部件 我想允许其他人使用它 这iframe通过 HTTP 加载 但我想允许用户通过 HTTPS 登录 即通过 SSL 发送登录请求 同源策略中允许这样做吗 即 场景是用户可以将我的 JavaScript 集成到他们的网站 小
  • 无法通过键获取 Gorilla 会话值

    我无法通过这种方式从会话中获取价值 它是nil session initSession r valWithOutType session Values key 完整代码 package main import fmt github com
  • 按引用或按值扫描功能

    我有以下代码 statement SELECT id from source where mgmt 1 var exists string errUnique dr db QueryRow statement mgmt Scan exist
  • 如何在C#中执行Go函数

    有没有办法从 C 执行 Go 函数 例如 对于 Python 我会使用 Ironpython 我知道我可以生成一个进程来执行 Go 脚本 但如果可能的话 我真的不想回退到这样的解决方案 Google 搜索没有显示任何内容 那么有什么方法可以
  • 我可以根据我正在构建的操作系统导入 Golang 包吗?

    假设我有一个基于哪个操作系统的 go 项目 在某些情况下是哪个发行版 我想使用 Systemd 客户端包 Upstart 客户端包 sysv 客户端包 launchd 客户端包 是否可以有选择地导入每个包 以便我只导入我正在构建的每个操作系
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 错误“binary.Write:无效类型”是什么意思?

    下面显示的代码 我创建了一个结构类型并希望将其编码为二进制 但它显示binary Write invalid type main Stu错误 我读过一些类似的代码 但我找不到为什么我的代码不起作用 type Stu struct Name

随机推荐

  • 为什么 find 命令 -exec 选项需要反斜杠和分号?

    我已经开始在linux终端中组合不同的命令 我想知道为什么命令需要反斜杠和分号 例如 find name blabla exec cp test 当一个简单的 cp 命令很简单时 cp randomfile test 没有 它们是为了清楚地
  • 在 FXML 中使用 fx:id 作为 CSS id

    似乎在 FXML 中 如果您不指定 ID CSS 则默认使用 fx id 值 我之前的理解是这两者是完全不相交的 ID用于CSS并且仅用于CSS fx id 用于控制器中的 FXML 绑定 这可以通过一个小测试来演示 三个按钮 第一个带有
  • 如何在已安装的 Express 应用程序中共享会话

    我有一个相当复杂的基于 Express 的 Web 应用程序 它分为几个子应用程序 这些子应用程序也是 Express 应用程序 使用app use 如何在应用程序的所有部分之间无缝地使用同一会话 与 Connect 捆绑在一起的中间件具有
  • 如何在 C 中的分叉进程上使用 POSIX 信号量?

    我想分叉多个进程 然后在它们上使用信号量 这是我尝试过的 sem init sem 1 1 semaphore pshared value if pid 0 parent process wait NULL wait all child p
  • Python lambda 和作用域[重复]

    这个问题在这里已经有答案了 鉴于这段代码 funcs for x in range 3 funcs append lambda x print f for f in funcs 我希望它能打印出来 0 1 2 而是打印 2 2 2 关于 l
  • OSX 10.13.4 上堆栈安装 ghc-mod 因依赖项冲突而失败

    当我尝试通过堆栈安装 ghc mod 时 我最终遇到了这些依赖项冲突 Error While constructing the build plan the following exceptions were encountered In
  • 如何通过ldap中的域名获取用户的用户名和SID

    我正在尝试获取特定域的用户信息 该域将作为程序的输入 根据域名 它应该返回用户名 或用户的 NT Id 和 SID 的列表 我是 LDAP 编程新手 任何人都可以帮助我获取此列表 如果您使用 NET 3 5 及更高版本并谈论 Active
  • JavaFX 在场景中嵌入场景

    我有一个使用 javafx 场景来渲染某些内容的应用程序 我想将该渲染放入我制作的一些 GUI 中 也在 javafx 中 我该怎么做呢 基本上有一些容器我可以将场景放入其中 然后将该容器放入 GUI 中 抱歉 如果这是一个新手问题 我是
  • 类型特征:检查类是否具有特定功能(可能继承)

    我知道有很多可能的方法来检测一个类是否具有特定的功能 但没有一种方法真正适合我的具体情况 我当前用于检查成员函数是否正确的实现 除了继承函数之外 include
  • 图片框问题

    我有个问题 我有 3 个图片框 里面有 3 张不同的图像如图所示 我可以设置什么图片框3所以两张图片看起来都一样 EDITED 我想将pictureBox3移动到pictureBox2上 所以没有选项将它们合并为单个图像 确保图像在pict
  • unix管道多个作家

    如果有多个线程将固定长度数据 例如 4 字节地址 写入单个管道 并且该管道有一个读取器 是否可以保证读取器按顺序获取字节 换句话说 就是write 到管道原子 http pubs opengroup org onlinepubs 00969
  • 如果还不是可迭代的,则 Pythonic 转换为单例可迭代

    假设我有 def distance2 vector1 vector2 zipped zip vector1 vector2 difference2 vector2 vector1 2 for vector1 vector2 in zippe
  • 表单提交后隐藏/显示 Div?

    你好 我在让它工作时遇到了一些麻烦 非常简单 我想做的就是在提交 html 表单后显示一个 div
  • MVC 中的 MVC-ControllerTypeCache.xml

    在调试 ASP NET MVC 源时我发现 MVC ControllerTypeCache xml 文件被使用 但我无法理解这个文件的用途 我的意思是这个文件存储在哪里 asp net MVc 如何使用这个文件 请帮忙 该文件用于缓存控制器
  • Android项目的Gradle组装失败,找不到R.txt

    抱歉我的英语不好 我正在尝试使用 Android Studio 将我的项目迁移到 Gradle 但目前构建失败processDebugResources 错误信息 任务 app processAdultDebugResources 执行失败
  • 轻松测量经过的时间

    我正在尝试使用time 测量我的程序的各个点 我不明白的是为什么之前和之后的值是相同的 我知道这不是分析我的程序的最佳方式 我只是想看看需要多长时间 printf MyProgram before time ld n time NULL d
  • 绑定时 ObjectContext 实例已被释放[重复]

    这个问题在这里已经有答案了 这是我的代码 public class JobsRepository BaseNewsletterRepository public IEnumerable
  • 使用 Codeigniter 获取 PUT 请求

    我现在有一个 CodeIgniter 问题 我使用REST 控制器库 这真的很棒 创建一个 API 但我无法收到 PUT 请求 这是我的代码 function user put user id this gt get id echo use
  • “现在无法切换到旧模式” - tls.connect 函数中的 Node.JS apn 模块错误

    我正在尝试实现 Node JS apn 模块来连接到 APNS Apple 推送通知服务 以从运行 Ubuntu 12 04 的 Amazon EC2 实例上托管的节点服务器 使用 ExpressJS 将通知推送到 iPhone 设备 我收
  • http请求会自动重试吗?

    我正在尝试使用 GoLang 将数据推送到 apache 服务器 假设我的apache服务器暂时停止了 然后我的http请求会自动重试 我正在使用这个声明 resp err http DefaultClient Do req if err