Tweepy.让流永远运行

war*_*nds 3 python twitter tweepy

我对tweepy python库比较新.我想确保我的流python脚本始终在远程服务器上运行.因此,如果有人分享如何实现这一目标的最佳实践,那就太棒了.

现在我这样做:

if __name__ == '__main__':

while True:

    try:

        # create instance of the tweepy tweet stream listener
        listener = TweetStreamListener()

        # set twitter keys/tokens
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

        # create instance of the tweepy stream
        stream = Stream(auth, listener)

        stream.userstream()
    except Exception as e:
        print "Error. Restarting Stream.... Error: "
        print e.__doc__
        print e.message
        time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

我回答False每一种方法:on_error(), on_disconnect(), on_timeout().因此,通过返回False流停止然后在无限循环中重新连接.

blu*_*hip 5

这是我如何做我的,它已经运行了将近一年,在两台计算机上处​​理阻止流在这里和那里的错误.

#They don't need to be in the loop.
auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

while True:
    listener = TweetStreamListener()
    stream = Stream(auth, listener, timeout=60)

    try:
        stream.userstream()

    except Exception, e:
        print "Error. Restarting Stream.... Error: "
        print e.__doc__
        print e.message
Run Code Online (Sandbox Code Playgroud)

为了确保它永远运行,您应该重新定义on_error方法以处理重新连接尝试之间的时间.你的5秒睡眠会妨碍你成功重新连接的机会,因为Twitter会发现你试图过于频繁地进行重新连接.但这是另一个问题.