Twitter API:重新连接TCP / IP级网络错误

时间:2013-08-09 14:48:00

标签: api twitter

我正在为通过 Twitter Streaming API 连接的机器人制定退避策略。 API文档声明:

  

线性退回TCP / IP级网络错误。这些问题通常是暂时的,并且很快就会清除。每次尝试重新连接延迟增加250毫秒,最多16秒。

我理解这个错误是 - 无论出于何种原因 - 客户端无法与服务器通信(即:没有Internet服务)。但是,我不确定 HTTP状态代码是否等于或大于500 也应被视为 TCP / IP级网络错误(即:503服务不可用),因为,为了接收此错误代码,客户端和服务器之间的连接应该已经成功。

有人可以帮我理解这个吗?

感谢。

1 个答案:

答案 0 :(得分:1)

由于这篇文章为我赢得了“Tumbleweed”徽章:-),我决定发布我在Twitter Developers收到的回复:

  

<强> @kurrik

     

我认为你的直觉是正确的,因为HTTP状态代码不是TCP / IP错误,你应该使用指数退避。这类错误的退避速度较慢,因此您的连接不会受到速率限制。 5XX错误有点不寻常,因为它表示在速率限制器记录连接尝试之前或之后可能发生的错误。为了安全起见,我会说在这种情况下使用指数退避(尽管在第一次重新连接尝试后应该清除大多数503个问题)。

我最终使用了这个策略:

  • 断线和500个错误:线性退避从0.25秒开始,每次增加0.25秒,最多16秒。
  • 所有大于500的错误:指数退避从5s开始,每次加倍,最多5分钟。
  • 费率限制(420/429):指数退避从1米开始,每次加倍。
  • 无重新连接:所有4XX错误与速率限制错误不同。