Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
8ee167bc
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8ee167bc
编写于
7月 09, 2020
作者:
M
Ming Deng
提交者:
GitHub
7月 09, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4051 from gmelodie/sleep-on-reconnect-3972
Add sleep on reconnect
上级
28d3f624
2eccb234
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
0 deletion
+37
-0
httplib/httplib.go
httplib/httplib.go
+8
-0
httplib/httplib_test.go
httplib/httplib_test.go
+29
-0
未找到文件。
httplib/httplib.go
浏览文件 @
8ee167bc
...
...
@@ -144,6 +144,7 @@ type BeegoHTTPSettings struct {
Gzip
bool
DumpBody
bool
Retries
int
// if set to -1 means will retry forever
RetryDelay
time
.
Duration
}
// BeegoHTTPRequest provides more useful methods for requesting one url than http.Request.
...
...
@@ -202,6 +203,11 @@ func (b *BeegoHTTPRequest) Retries(times int) *BeegoHTTPRequest {
return
b
}
func
(
b
*
BeegoHTTPRequest
)
RetryDelay
(
delay
time
.
Duration
)
*
BeegoHTTPRequest
{
b
.
setting
.
RetryDelay
=
delay
return
b
}
// DumpBody setting whether need to Dump the Body.
func
(
b
*
BeegoHTTPRequest
)
DumpBody
(
isdump
bool
)
*
BeegoHTTPRequest
{
b
.
setting
.
DumpBody
=
isdump
...
...
@@ -512,11 +518,13 @@ func (b *BeegoHTTPRequest) DoRequest() (resp *http.Response, err error) {
// retries default value is 0, it will run once.
// retries equal to -1, it will run forever until success
// retries is setted, it will retries fixed times.
// Sleeps for a 400ms inbetween calls to reduce spam
for
i
:=
0
;
b
.
setting
.
Retries
==
-
1
||
i
<=
b
.
setting
.
Retries
;
i
++
{
resp
,
err
=
client
.
Do
(
b
.
req
)
if
err
==
nil
{
break
}
time
.
Sleep
(
b
.
setting
.
RetryDelay
)
}
return
resp
,
err
}
...
...
httplib/httplib_test.go
浏览文件 @
8ee167bc
...
...
@@ -15,6 +15,7 @@
package
httplib
import
(
"errors"
"io/ioutil"
"net"
"net/http"
...
...
@@ -33,6 +34,34 @@ func TestResponse(t *testing.T) {
t
.
Log
(
resp
)
}
func
TestDoRequest
(
t
*
testing
.
T
)
{
req
:=
Get
(
"https://goolnk.com/33BD2j"
)
retryAmount
:=
1
req
.
Retries
(
1
)
req
.
RetryDelay
(
1400
*
time
.
Millisecond
)
retryDelay
:=
1400
*
time
.
Millisecond
req
.
setting
.
CheckRedirect
=
func
(
redirectReq
*
http
.
Request
,
redirectVia
[]
*
http
.
Request
)
error
{
return
errors
.
New
(
"Redirect triggered"
)
}
startTime
:=
time
.
Now
()
.
UnixNano
()
/
int64
(
time
.
Millisecond
)
_
,
err
:=
req
.
Response
()
if
err
==
nil
{
t
.
Fatal
(
"Response should have yielded an error"
)
}
endTime
:=
time
.
Now
()
.
UnixNano
()
/
int64
(
time
.
Millisecond
)
elapsedTime
:=
endTime
-
startTime
delayedTime
:=
int64
(
retryAmount
)
*
retryDelay
.
Milliseconds
()
if
elapsedTime
<
delayedTime
{
t
.
Errorf
(
"Not enough retries. Took %dms. Delay was meant to take %dms"
,
elapsedTime
,
delayedTime
)
}
}
func
TestGet
(
t
*
testing
.
T
)
{
req
:=
Get
(
"http://httpbin.org/get"
)
b
,
err
:=
req
.
Bytes
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录