我正在使用 Twitter4J (twitter4j-core:4.0.6) 在 Java 8 中构建一个应用程序来抓取好友和关注者。我将用数据填充图形结构,并且我期望很快达到速率限制,因此我尝试以只有耗尽的端点才进入休眠状态的方式构建应用程序。
为了确保我有正确数量的剩余调用,因为其他应用程序、线程或实例也会耗尽同一请求池,我尝试使用 RateLimitStatusListener 接口(interface)来获取 onRateLimitStatus(RateLimitStatusEvent event)
和 onRateLimitReached(RateLimitStatusEvent event)
控制循环的 sleep 标志。
问题是,我似乎无法找到任何地方来访问 RateLimitStatusEvent 对应的端点,即“/friends/ids”、“/followers/ids”或“/users/lookup”。
我考虑过只查找速率限制并保留本地计数,但如果有多个实例、其他应用程序等同时访问该信息,则在本地计数之前将达到速率限制意识到。我可能会在应用程序完成后发布该应用程序,然后我可能会同时拥有多个用户。
有谁知道使用 Twitter4J 实现此目的的好方法,还是我必须自己推出?
最佳答案
另一种可能性(@kadir 的评论中尚未提及)是使用 Map<String, RateLimitStatus> getRateLimitStatus(String... resources) throws TwitterException
关于Twitter
实例。
此方法将对 application/rate_limit_status
执行 REST 调用端点并返回给定 resource familiy
的当前速率限制状态。可以找到此端点的文档 here .
在您的情况下,您可以使用此端点来请求资源系列 friends
, users
, followers
可以获取该系列相关的所有端点的限速状态。
但是,过于频繁地调用此端点也可能会导致速率限制。
关于java - 如何识别 Twitter4j RateLimitStatusEvent 包含哪个端点的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302111/