我正在开发一个基于Web(GWT 2.0.1)的基于Web的(商业)应用程序,其中用户数量来自&提出要求。大约1000个usres(超过那个)通过我的基于Web的应用程序向Twitter发出请求。因为我使用了twitter4j-2.0.9.jar
有什么办法......所以我可以避免“超出速率限制”的问题。表示每小时(1000>)的请求数。
当我通过我的网站在1小时内提出30+请求时,我遇到了以下异常
twitter4j.TwitterException:400:请求无效。随附的错误消息将解释原因。这是速率限制期间将返回的状态代码。
< ?xml version="1.0" encoding="UTF-8"?>
< hash>
< request>/statuses/followers.xml< /request>
< error> Rate limit exceeded. Clients may not make more than 30 requests per hour.< /error>
< /hash>
at twitter4j.http.HttpClient.httpRequest(HttpClient.java:469)
at twitter4j.http.HttpClient.get(HttpClient.java:412)
at twitter4j.Twitter.get(Twitter.java:276)
at twitter4j.Twitter.get(Twitter.java:228)
at twitter4j.Twitter.getFollowersStatuses(Twitter.java:1363)
at twitter4j.Twitter.getFollowers(Twitter.java:1350)
at com.wissen.supergroupers.server.impl.TwitterServiceImpl.getTwitterFollowers(TwitterServiceImpl.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
有什么办法......所以我可以避免“超出速率限制”的问题。表示每小时(1000>)的请求数。
请提供良好的解决方案!!!
希望您身边的最佳合作
提前致谢
答案 0 :(得分:5)
尝试获取白名单。来自the rate-limiting documentation:
<强>白名单强>
某些应用程序发现默认限制不足。在这种情况下,我们提供白名单。可以将用户帐户和IP地址列入白名单。每个白名单实体,无论是帐户还是IP地址,每小时都允许20,000个请求。如果您正在开发应用程序并希望被列入白名单,请填写白名单申请表。我们会审核每个白名单应用程序,有时可能需要一周时间才能收到决定。一旦我们做出决定,我们将通过电子邮件发送与提交申请的Twitter帐户相关联的地址。
答案 1 :(得分:1)
您可能希望阅读their documentation。 Twitter这样做的目的是为了避免资源消耗(实际上,他们已经有足够的问题让网站保持工作状态)。我相信,链接的文档涵盖了您的确切问题。