Twitter流媒体API连接运行良好,但在几条推文后被踢出

时间:2015-02-10 07:59:06

标签: api twitter streaming

我有一个针对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!"

1 个答案:

答案 0 :(得分:0)

是的,任何开始使用Twitter的免费流媒体API的人最终都必须与Twitter的速率限制行为进行竞争和设计。你可以做的事情比重启你的ec2实例要少。我建议再研究一下。