【发布时间】:2015-04-10 04:35:12
【问题描述】:
我有一个用于 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!"
【问题讨论】:
-
当它停止时会发生什么?是否抛出异常?
-
不,它根本没有抛出任何异常,这很有趣。
-
您是否阅读过 Twitter 上有关速率限制的文档?您是否曾经每 15 分钟收集超过 180 条消息?
-
是的,我已经读过了。我查了一下,账户没有被暂停。所以不可能是我达到了速率限制。 twitter 根本不提供电子邮件支持服务吗?
-
一分钱一分货:)