【问题标题】:Why is my third Twitter request always timing out?为什么我的第三个 Twitter 请求总是超时?
【发布时间】:2011-05-29 20:23:54
【问题描述】:

这越来越烦人了。我有一个应用程序应该在 Twitter 上发布状态信息。它是用 C# 编写的,并使用DotNetOpenAuth 进行身份验证。

我使用以下代码进行状态更新:

var the_request = m_consumer.PrepareAuthorizedRequest(status_endpoint,
                                                      m_access_token);
the_request.GetResponse();

前两个状态更新总是完美无缺地几乎立即执行。

然后第三个超时。我抛出了 System.Net.WebException 类型的异常。

无论我做什么,总是第三个​​请求超时。任何后续请求都会超时。

这是怎么回事?

【问题讨论】:

  • 您提出请求的速度有多快?
  • @Martin:嗯……我想我能尽快把它们运走。
  • 我知道有一个速率限制,但我没想到它会在这里生效。如果是这样,那么后续重试怎么会失败呢?我在两次通话之间等待 30 秒。
  • WebException有没有更多细节?
  • @Dan:不,没有。我用调试器检查了异常中的所有内容,“超时”是我从中提取的唯一有用的东西。

标签: c# api twitter timeout dotnetopenauth


【解决方案1】:

我假设 the_request 是一个 HttpWebRequest。如果流未正确关闭,则会导致超时。确保在每次请求后关闭您的请求和响应流

the_request.GetResponse();
the_request.close()

   var resp = the_request.GetResponse();
   //your logic to handle to response
   resp.close()

【讨论】:

  • 就是这样!这就是问题所在。谢谢!
【解决方案2】:

每个 twitter API 都有一个速率限制。

我看到默认速率是每小时 150 个请求。
取决于他们如何实现限制,但每分钟大约 2.5 个请求。

您是否尝试过在每个请求之间等待 30 秒。

【讨论】:

  • @George Edison:那时你可能已经突破了限制,所以他们正在坚持。尝试在每个请求之间暂停 30 秒,看看你是否连续获得 3 个。如果这行得通,请缩短到达最佳位置的时间。
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 2016-12-02
相关资源
最近更新 更多