微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twitter 流 API,为搜索流 API v2 分配的请求

如何解决Twitter 流 API,为搜索流 API v2 分配的请求

我是 Twitter API 的新手(这是我的第一次体验),我正在使用它们来监视新推文的帐户,并在发生时打开网页,但我对理解有些怀疑分配如何运作。

不太了解,twitter stream v2 APIs 似乎适合我的用例,并且在 Twitter-API-v2-sample-code git repository 中也有一个非常明确的 filtered stream nodejs example。公平地说,我在实现所有内容时都没有什么麻烦,而且我的代码filtered_stream.js source code 没有太大区别。鉴于提供的示例,实现很简单:我使用 https://api.twitter.com/2/tweets/search/stream/rules 来设置我的规则(一个[ { 'value': 'from:<myAccount>' } ] 这样的数组,然后我开始在 https://api.twitter.com/2/tweets/search/stream 处监听,很简单。

我不明白的是分配资源的数量,因为 as per Twitter documentation 我应该能够每 15 分钟发出 50 个请求,但我几乎不能发出几个请求,因此每次我测试我的脚本时我必须等待几分钟才能重新启动。

这些是我在重新启动一个小时后运行的脚本后收到的相关标头(重新启动时的状态代码为 429):

  • x-rate-limit-limit:50
  • x-rate-limit-remaining:49
  • 重置时间:距离当前时间+15分钟

我通常不必等待 15 分钟,通常只需几个就可以了...我的另一个注意事项是我设法将 x-rate-limit-remaining 降低到 45 x-rate-limit-remaining 一两次,但从未降低比那个(通常我被锁定在 47 / 48)。

我不明白的是:我打开了一个流,我关闭了那个流,现在我被锁定了几分钟。据称,我不应该能够在 15 分钟内打开多达 50 个连接吗? (如果我只是调试一部分代码,这实际上已经足够了)。甚至标题说我还有 49 次尝试剩余 50 次,状态代码 429 似乎与 x-rate-limits 完全矛盾......有时,我什至无法重置规则并在同一次运行中启动流,因为当规则重置完成(获取 -> 设置 -> 删除)时,流将返回退避(状态 429)...

我可以添加我的代码,但它确实是我上面引用的 NodeJS example,我的问题不在于查询 API,而是无缘无故无法连接(至少对我而言)。我唯一能想到的事实是,我对所有请求使用相同的 Bearer(根据他们的示例),但我没有看到任何有问题的地方(我在开发人员仪表板中生成它,我是不确定是否也有相应的 API)。

编辑 - 添加详细信息

只是为了描述我的问题,这是我第一次启动脚本时得到的输出

Headers for stream received (status 200): 
 - [x-rate-limit-limit]: 50
 - [x-rate-limit-remaining]: 49
 - [x-rate-limit-reset]: 20/03/2021,11:05:35

这是有道理的,我提出了一个请求,剩余的计数减少了一个

现在,我停止了它,然后立即运行(Ctrl + C,再次运行,假设延迟两秒),这是新的输出

Headers for stream received (status 429): 
 - [x-rate-limit-limit]: 50
 - [x-rate-limit-remaining]: 48
 - [x-rate-limit-reset]: 20/03/2021,11:05:35

在正文中返回以下异常:

{
  title: 'ConnectionException',detail: 'This stream is currently at the maximum allowed connection limit.',connection_issue: 'TooManyConnections',type: 'https://api.twitter.com/2/problems/streaming-connection'
}

我知道服务器需要一点时间才能意识到我已断开连接,但是我在 15 分钟的时间内没有 50 个可用连接吗?我只打开了一个连接。

实际上,在写完上述所有内容(假设十分钟)之后,我能够再次连接,并收到此输出

Headers for stream received (status 200): 
 - [x-rate-limit-limit]: 50
 - [x-rate-limit-remaining]: 47
 - [x-rate-limit-reset]: 20/03/2021,11:05:35

也许我现在才意识到,我写了一个无用的问题,但是我可以只有一个活动连接,能够在 15 分钟内关闭它并再次打开它 50 次吗?我知道我可以有 50 个活动连接,但也许在这一点上我错了(Twitter 服务器确实需要几分钟才能意识到我断开连接)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。