【发布时间】:2012-11-06 11:58:49
【问题描述】:
我有一个 python 脚本,它使用基本身份验证和 tweetstream 模块连接到 Twitter Streaming API。
我每分钟收集大约 10 条推文。
我遇到了断断续续的情况,因此目前正在记录它们发生的频率。
我一直在达到我的速率限制并收到 420 个 HTTP 错误。
我知道对于搜索 API,使用 OAuth 身份验证可以获得更高的配额。对于流媒体,我找不到任何关于基本和 OAuth 之间速率限制差异的参考。无论如何,我正在使用的 python Tweetstream 似乎不支持流 API。
我注意到Ruby version of Tweetstream 支持 OAuth,但我做这个项目是为了学习 python。
通过阅读Twitter help,它谈到了“退避策略”并提到:
必须在几分钟内停止进一步的连接尝试 如果收到 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 比较熟悉的朋友,能推荐一下方法吗?
【问题讨论】:
标签: python twitter tweetstream twitter-streaming-api