8

我正在使用一个 java Twitter 应用程序(使用 Twitter4J api)。我已经创建了应用程序,可以查看当前用户的时间线、用户的个人资料等。

但是,在使用该应用程序时,它似乎很快超过了 Twitter 客户端上设置的每小时 150 个请求的速率限制(我知道开发人员可以在给定的帐户上将其增加到 350 个,但这不会解决其他用户的问题)。

当然这不会影响所有客户,关于如何解决这个问题的任何想法?

有谁知道什么是请求?例如,当我查看用户的个人资料时,我加载用户对象 (twitter4j),然后将屏幕名称、用户名、用户描述、用户状态等放入 JSON 对象 - 这是否是获取对象的单个调用还是会包含所有 user.get... 调用?

提前致谢

4

2 回答 2

4

在处理 Twitter 时,您确实需要跟踪您当前的请求数。

但是,twitter 似乎并没有减少 304 Not Modified 的计数(至少我上次处理它时没有),所以请确保没有任何东西破坏您对 HTTP 缓存的正常使用,以及您的实际请求每小时上升。

请注意,twitter 在 apache 上的 mod_gzip 中存在一个错误,其中电子标签在更改它以反映内容编码与非压缩实体的不同时形成错误(这是正确的做法,有只是实现中的一个错误)。因此,从 twitter 接受 gzip 压缩的内容意味着它永远不会发送 304,这会增加您的请求数,并且在许多情况下会破坏使用 gzip 的效率收益。

因此,如果您接受 gzip(您的网络库默认情况下可能会这样做,请使用 Fiddler 之类的工具查看您可以看到的内容,我是一个只有一点 Java 知识的 .NET 人员,在 twitter 上回答处理 HTTP,所以我不知道 Java Web 库的详细信息),尝试将其关闭,看看它是否可以改进。

于 2010-08-08T14:21:03.593 回答
1

几乎所有来自 Twitter 服务器的读取类型(即任何调用 HTTP GET 的内容)都算作一个请求。获取用户时间线、转发、直接消息、获取用户数据都算作 1 个请求。几乎唯一从服务器读取而不计入 API 限制的 Twitter API 调用是检查速率限制状态。

于 2010-08-22T00:12:38.617 回答