我正在为通过 Twitter Streaming API 连接的机器人制定退避策略。 API文档声明:
线性退回TCP / IP级网络错误。这些问题通常是暂时的,并且很快就会清除。每次尝试重新连接延迟增加250毫秒,最多16秒。
我理解这个错误是 - 无论出于何种原因 - 客户端无法与服务器通信(即:没有Internet服务)。但是,我不确定 HTTP状态代码是否等于或大于500 也应被视为 TCP / IP级网络错误(即:503服务不可用),因为,为了接收此错误代码,客户端和服务器之间的连接应该已经成功。
有人可以帮我理解这个吗?
感谢。
答案 0 :(得分:1)
由于这篇文章为我赢得了“Tumbleweed”徽章:-),我决定发布我在Twitter Developers收到的回复:
<强> @kurrik 强>
我认为你的直觉是正确的,因为HTTP状态代码不是TCP / IP错误,你应该使用指数退避。这类错误的退避速度较慢,因此您的连接不会受到速率限制。 5XX错误有点不寻常,因为它表示在速率限制器记录连接尝试之前或之后可能发生的错误。为了安全起见,我会说在这种情况下使用指数退避(尽管在第一次重新连接尝试后应该清除大多数503个问题)。
我最终使用了这个策略: