我有一个 python 脚本,它使用基本身份验证并使用tweetstream模块 连接到 Twitter Streaming API 。
我每分钟收集大约 10 条推文。
我遇到了间歇性断开连接,因此目前正在记录它们发生的频率。
我一直在达到我的速率限制并收到 420 个 HTTP 错误。
我知道对于搜索 API,使用 OAuth 身份验证可以获得更高的配额。对于流媒体,我找不到任何关于基本和 OAuth 之间速率限制差异的参考。无论如何,我正在使用的 python Tweetstream 似乎不支持流 API。
我注意到Tweetstream 的 Ruby 版本支持 OAuth,但我正在做这个项目作为 python 的学习经验。
通过阅读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 比较熟悉的朋友,能推荐一个方法吗?