如何识别Twitter4j RateLimitStatusEvent包含限制的端点

时间:2017-07-25 11:36:29

标签: java twitter twitter4j

我正在使用Twitter4J(twitter4j-core:4.0.6)在Java 8中构建应用程序来抓取友谊和关注者。我将使用数据填充图形结构,并且我期望快速达到速率限制,因此我尝试以这样的方式构建应用程序,使得只有耗尽的端点进入休眠状态。

为了确保我有正确数量的剩余呼叫,因为其他应用,线程或实例也耗尽了同一个请求池,我试图使用RateLimitStatusListener接口来获得onRateLimitStatus(RateLimitStatusEvent event)和{{1控制循环的睡眠标志。

然而问题是,我无法找到任何地方来访问RateLimitStatusEvent对应的端点,即“/ friends / ids”,“/ followers / ids”或“/ users / lookup”。

我考虑过查看速率限制并保留本地计数,但如果有多个实例,其他应用程序等同时访问信息,则在本地计数到期之前将达到速率限制意识到。我可能会在应用程序完成时发布它,然后我可能会有多个同时用户。

有没有人知道用Twitter4J做这个的好方法,还是我必须自己动手?

1 个答案:

答案 0 :(得分:2)

@kadir在评论中未提及的另一种可能性是在Map<String, RateLimitStatus> getRateLimitStatus(String... resources) throws TwitterException实例上使用Twitter

此方法将对application/rate_limit_status端点执行REST调用,并返回给定resource familiy的当前速率限制状态。可以找到此端点的文档here

在您的情况下,您可以使用此终结点来请求资源系列friendsusersfollowers并获取与此相关的所有端点的速率限制状态家庭。

但是,过于频繁地调用此端点也可能导致速率限制。