Python 避免twitter流断开连接

Python 避免twitter流断开连接,python,twitter,oauth,tweepy,twitter-streaming-api,Python,Twitter,Oauth,Tweepy,Twitter Streaming Api,我有一个python脚本,可以将tweet流式传输到csv文件中。我已经提供了运行时参数46800秒,相当于13小时,这决定了tweets必须流到该csv中的时间。它在指定的持续时间内运行良好,直到昨天,但昨天脚本只运行了7.5小时,之后就停止了流媒体。我相信,在一段时间内,没有关于我正在播放的主题的推特,因此断开了连接。因此,即使当人们在稍后的时候开始就讨论中的主题发推特时,连接没有重新建立,因此脚本也没有将这些推特流到csv文件中。因此,我不得不在另一个实例中重新启动脚本,让脚本将tweet

我有一个python脚本,可以将tweet流式传输到csv文件中。我已经提供了运行时参数46800秒,相当于13小时,这决定了tweets必须流到该csv中的时间。它在指定的持续时间内运行良好,直到昨天,但昨天脚本只运行了7.5小时,之后就停止了流媒体。我相信,在一段时间内,没有关于我正在播放的主题的推特,因此断开了连接。因此,即使当人们在稍后的时候开始就讨论中的主题发推特时,连接没有重新建立,因此脚本也没有将这些推特流到csv文件中。因此,我不得不在另一个实例中重新启动脚本,让脚本将tweets流到另一个csv文件中。今天,我也遇到了类似的问题,流在运行了6个小时后断开了连接,所以我不得不重新启动

但我不确定情况是否如此。下面是我使用的脚本,请告知可能发生的情况。如果是这样的话,我该如何避免这种情况

runtime = 46800

class listener(StreamListener):

def on_data(self,data):
 data1 = json.loads(data)
 time = data1["created_at"]
 tweet1 = BeautifulSoup(tweet, "lxml").get_text() 
 url = "https://twitter.com/{}/status/{}".format(data1["user"]["screen_name"], data1["id_str"])
 file = open('MARCH_DATA.csv', 'a')
 csv_writer = csv.writer(file)
 csv_writer.writerow([time, tweet1, url])
 file.close()

auth = OAuthHandler(consumer_key,consumer_secret) 
auth.set_access_token(access_token,access_token_secret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track=["MTA"], async = True)
time.sleep(runtime)
twitterStream.disconnect()

谢谢

这对我的流媒体练习很有效

# the regular imports, as well as this:
from urllib3.exceptions import ProtocolError

auth = OAuthHandler(consumer_key,consumer_secret) 
auth.set_access_token(access_token,access_token_secret)
twitterStream = Stream(auth, listener())
while True:
        try:
            twitterStream.filter(track=["MTA"], async = True, stall_warnings=True)
        except (ProtocolError, AttributeError):
            continue

这对我的流媒体练习有效

# the regular imports, as well as this:
from urllib3.exceptions import ProtocolError

auth = OAuthHandler(consumer_key,consumer_secret) 
auth.set_access_token(access_token,access_token_secret)
twitterStream = Stream(auth, listener())
while True:
        try:
            twitterStream.filter(track=["MTA"], async = True, stall_warnings=True)
        except (ProtocolError, AttributeError):
            continue