我有一个针对Twitter的流式API脚本,可以提取推文并且运行良好。几周之前,它停止了数据提取。所以我们不得不重新启动EC2服务器并重新启动它。现在的问题是我们可以连接到API但是在几条推文之后我们就会断开连接。
以前有人遇到过这个问题吗?
类MyStreamer(TwythonStreamer):
def getTimestamp(self,created_at):
'''
Returns a UNIX TIMESTAMP from a Twitter formatted date.
'''
try:
stripped = time.strptime(created_at,'%a %b %d %H:%M:%S +0000 %Y')
yy = time.strftime('%Y', stripped)
mm = time.strftime('%m', stripped)
dd = time.strftime('%d', stripped)
h = time.strftime('%H', stripped)
m = time.strftime('%M', stripped)
s = time.strftime('%S', stripped)
return yy+"-"+mm+"-"+dd+" "+h+":"+m+":"+s
except:
return False
def on_success(self, data):
if 'text' in data:
#print data['user']['screen_name'], self.getTimestamp(data['created_at']), "...",
cursor.execute('INSERT INTO `raw_tweet` (`id`,`id_str`,`text`,`screen_name`,`created_at`,`is_stream`) VALUES (%s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE id=id;',
(data['id'], data['id_str'], data['text'], data['user']['screen_name'], self.getTimestamp(data['created_at']),1))
db.commit()
#print "Inserted."
def on_error(self, status_code, data):
print status_code
# Want to stop trying to get data because of the error? Uncomment the next line!
# self.disconnect()
def on_timeout():
print "Twitter time-out!"
答案 0 :(得分:0)
是的,任何开始使用Twitter的免费流媒体API的人最终都必须与Twitter的速率限制行为进行竞争和设计。你可以做的事情比重启你的ec2实例要少。我建议再研究一下。