我有一个python脚本,可将推文流式传输为csv文件。我提供了46800秒的运行时参数,该参数等于13小时,该参数指示将tweet流式传输到该CSV的时间。在指定的持续时间(直到昨天)之前,它运行良好,但是昨天脚本仅运行7.5小时,此后便停止流式传输。我相信,在一段时间内我一直没有发送有关该主题的推文,因此断开了连接。因此,即使以后人们开始在有关该主题的推文中,该连接也没有得到重新建立,因此脚本也没有将这些推文流式传输到csv文件。因此,我不得不在另一个实例中重新启动脚本,并让脚本将推文流式传输到另一个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()
谢谢
答案 0 :(得分:0)
这对我的流媒体练习很有用。
# 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