Twitter Streaming API:'Connection broken: IncompleteRead'



我正在通过Python和Tweepy上的streaming API从Twitter流式传输一些数据。代码如下所示:

class TwitterStreamer():
def __init__(self):
pass
def stream_tweets(self, twitter_data_title, key_words):
# This handles Twitter authetification and the connection to Twitter Streaming API
listener = StreamListener(twitter_data_title)
auth = tweepy.OAuthHandler(api_key, api_secret_key)
auth.set_access_token(access_token, access_secret_token)
stream = tweepy.Stream(auth, listener)
# This line filter Twitter Streams to capture data by the keywords: 
stream.filter(track=key_words)
class StreamListener(tweepy.StreamListener):
def __init__(self, twitter_data_title):
self.fetched_tweets_filename = twitter_data_title
def on_data(self, data):
try:
print(data)

with open(self.fetched_tweets_filename, 'a') as tf:
tf.write(data)
return True
except BaseException as e:
print("Error on_data %s" % str(e))
return True

def on_error(self, status):
print(status)

if __name__ == '__main__':
twitter_streamer = TwitterStreamer()

然而,过了一段时间,我总是收到错误"Connection breaked:IncompleteRead"。我觉得这个问题可能与之前的帖子有关(Twitter Streaming API-urlib3.exceptions.ProtocolError:(';连接断开:不完整读取(,但是,我不明白他是如何解决这个问题的。我如何才能以一种计算成本更低的方式剥离函数?

非常感谢!

在Tweepy上使用Twitter流媒体API时,这一直是一个持续的问题(我无法确认这是否发生在其他地方(,我也经历过。

我花了好几天的时间想办法解决它,但没有真正的解决方案。

相反,我最终使用了一个名为"不朽"的程序主管,如果程序停止,它会立即重新启动程序。我已经用了一年多了,没有任何问题,它会立即重新启动我的程序。

安装后,只需键入immortal,然后添加命令的其余部分即可使用它,例如:

immortal python3 twitterbot.py

当你的程序不可避免地引发IncompleteRead错误时,不朽将直接启动它!

最新更新