我有一个Python脚本,通过基本认证连接到Twitter的Streaming API,并利用tweetstream模块。我每分钟收集大约10条tweets。我经常遇到间歇性断开连接,所以我目前记录了它们发生的频率。我已经达到了速率限制,得到了420个HTTP错误。我知道对于搜索API,使用OAuth身份验证可以获得更高的配额。但是在流API中,我找不到任何关于基本认证和OAuth之间速率限制差异的参考。无论如何,看起来我使用的Python Tweetstream不支持流API的OAuth。我注意到Tweetstream的Ruby版本支持OAuth,但我选择使用Python进行这个项目,因为我希望通过这个学习经验来提高自己的Python编程技能。
我的问题是 - 这是绕过从Twitter接收420错误的好方法吗?那些更熟悉Twitter API的人,你能推荐一种方法吗?
从阅读Twitter帮助的内容中,它谈到了“退避策略”,并提到:
如果收到HTTP 420响应,则必须停止进一步的连接尝试数分钟。
我不再收到错误信息,但一直在尝试改进我的代码逻辑,以避免永久性地出现这些错误。
我目前的建议如下,现在等待200秒后再尝试重新连接。
while True:
try:
with tweetstream.FilterStream(uname, passwd, locations=extent) as stream:
# do stuff
except tweetstream.ConnectionError as e:
print e.message + " time: " + datetime.now
time.sleep(200)
pass
except tweetstream.AuthenticationError as e:
now = datetime.datetime.now()
print e.message + " time: " + str(now)
pass
我的问题是 - 这是绕过从Twitter接收420错误的好方法吗?那些更熟悉Twitter API的人,你能推荐一种方法吗?