首页 > 解决方案 > 使用沙盒环境和 searchtweets API 了解 Twitter API 速率限制

问题描述

我正在尝试为一些 Twitter 用户在 2 年内发布推文。我正在使用 Python 中的 searchtweets 库和 API 的沙盒版本。

我正在使用他们的 Result Stream 方法:

import searchtweets
rule = gen_rule_payload("from:BBCNews", from_date="2017-01-01",
                            to_date="2017-01-01", results_per_call=100) 
rs = ResultStream(rule_payload=create_rule(i),
                                  max_results=18000,  
                                  max_pages=1,
                                  **premium_search_args) # these are credentials, ommitted for security 
                    tweets = list(rs.stream())

但是,我得到了这个返回:

HTTP Error code: 429: Request exceeds account’s current package request limits. Please upgrade your package and retry or contact Twitter about enterprise access.

我已经查看了速率限制(https://developer.twitter.com/en/docs/basics/rate-limiting),并认为我已经正确推断出此类请求的速率限制是每 15 分钟 180 次,因此将 max_results 限制为 18,000 将阻止对 BBC 新闻推文的这一请求超过 15 分钟窗口的速率限制。每个请求返回 100 个结果,因此 18,000 个结果将是 100 个结果*180 个请求。

这不起作用,所以我想我一定是误解了。如果有人可以提供一些进一步的见解,那就太好了。

标签: pythontwittertwitterapi-python

解决方案


您引用的网页状态(顶部的第一行):

仅标准 API 端点,不适用于高级 API

每 15 分钟 180 个请求是指标准(旧版)1.1 搜索 API,仅限于 7 天的非完整索引。在使用沙盒的高级搜索中,如果您正在搜索完整的存档产品,则当月您有 50 个请求,每个请求最多 100 个推文(请参阅您的应用仪表板“订阅”部分)。在付费层中,您每月有 100 到 2500 个请求,每个请求可以覆盖多达 500 条推文,搜索规则更复杂(沙盒中的 128 个字符超过 1024 个字符)

检查应用程序仪表板订阅面板,它解释了您在当月请求方面的位置。


推荐阅读