我正在使用jtwitter编写一个推特应用程序 - 它在我工作中的服务器内部运行。无论如何 - 每当我从工作中运行它时,它返回下面的错误,我每小时只发出几个请求:
HTTP/1.1 400 Bad Request
{"request":"/1/statuses/user_timeline.json?count=6&id=cicsdemo&","error":"Rate limit exceeded. Clients may not make more than 150 requests per hour."} ]
2010-06-03 18:44:49 zero.timer.TimerTask::run Thread-3
SEVERE [ CWPZA3100E: Exception during processing for timer task, "twitterTimer". Exception: java.lang.ClassCastException: winterwell.jtwitter.Twitter$Status incompatible with java.lang.String ]
我在家里运行相同的代码 - 很好。
很明显,在某些时候,Twitter认为我们的工作都来自一个直接IP - 这就是为什么它达到了它应该达到的极限。我有任何选择或解决方法 - 我可以从我的直接机器IP - 或我的帐户而不是IP计算限额吗?我可以使用代理吗?有没有其他人有这个问题并解决了它?!
在有人要求APP必须住在我的工作中之前 - 它无法在其他任何地方运行!
干杯,
安迪
答案 0 :(得分:16)
针对某个帐户进行身份验证,以便您使用该帐户的API请求限制,而不是未经授权的IP限制:
http://dev.twitter.com/pages/rate-limiting
http://dev.twitter.com/pages/auth
如果您仍然遇到问题,可以要求将公司IP列入白名单,但对于您所说的内容(每小时只需要几个请求),只需创建一个帐户就是最好的选择。
答案 1 :(得分:2)
您可以要求Twitter将该限制提升至每小时20000个请求。这是一个非常简单的过程documented on their site.
答案 2 :(得分:2)
您还可以考虑使用更好(实时)的streaming api。它还将处理限制,因为只有新数据到达时才会有请求。