wechat icon indicating copy to clipboard operation
wechat copied to clipboard

文档中关于 timeout 的说明有歧义

Open yiichou opened this issue 7 years ago • 3 comments

文档中提到:

Wechat server timeout setting

Stability various even for Tencent wechat server, so setting a long timeout may needed, default is 20 seconds if not set.

通常来说,用户都会以为默认是请求超过 20 秒就会被判定为超时,并中断

但实际上:

# lib/wechat/http_client.rb line 9 in wechat.gem
# timeout = 20 by default
@httprb = HTTP.timeout(:global, write: timeout, connect: timeout, read: timeout)

# lib/http/timeout/global.rb in http.gem
def initialize(*args)
  super
  reset_counter
end

# To future me: Don't remove this again, past you was smarter.
def reset_counter
  @time_left = connect_timeout + read_timeout + write_timeout
  @total_timeout = time_left
end

也就是说,实际允许的超时时间最大可能是设定值的 3 倍,即 60 秒.

yiichou avatar Oct 28 '16 15:10 yiichou

欢迎PR,这部分timeout之前是基于rest client的,后来换到http后没更新,现在http的timeout控制确实精细了不少。

Eric-Guo avatar Oct 30 '16 12:10 Eric-Guo

借楼问下... @Eric-Guo 为什么把rest-client切换到http?因为我也在做类似的封装0.0

daggerjames avatar Nov 02 '16 08:11 daggerjames

速度快,可以保持http连接。

Eric-Guo avatar Nov 02 '16 11:11 Eric-Guo