Tweepy stream.filter() 连接一直超时,但 stream.sample() 工作正常

Tweepy stream.filter() connection keeps timing out but stream.sample() works just fine

所以我正在尝试使用 Tweepy 4.3.0 版流式传输一些数据。我也尝试过使用 4.2.0 和 < 4.0.0,大约 90 秒后返回相同的消息:

"Stream connection has errored or timed out"

消息返回后连接未终止

我的代码是:

import tweepy

auth = tweepy.OAuthHandler(credentials.API_KEY, credentials.API_SECRET_KEY)
auth.set_access_token(credentials.ACCESS_TOKEN, credentials.ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

print(api.verify_credentials().screen_name)

class IDPrinter(tweepy.Stream):

    def on_status(self, status):
        print(status.id)

printer = IDPrinter(credentials.API_KEY,
                    credentials.API_SECRET_KEY,
                    credentials.ACCESS_TOKEN,
                    credentials.ACCESS_TOKEN_SECRET)

printer.filter(track=["Tesla"])

和官方一样Tweepy documentation

但是,如果不是:

printer.filter(track=["Tesla"])

我使用:

printer.sample() 

然后正在按预期流式传输数据。 我还尝试了一堆关键字,包括“I”、“the”、“”等,其中none个都没有结果。

此外,sample() 方法运行良好这一事实告诉我我的凭据是有效的。我已经阅读了几次文档,因此非常感谢任何帮助!

编辑:我也尝试过低音量轨道关键字,但我仍然遇到问题。

EDIT2:这是我工作场所的公司防火墙引起的连接问题。

默认情况下,Tweepy 会在遇到连接错误时记录此信息。
您可以使用 Stream.on_connection_error.

覆盖它

连接没有终止,因为 Tweepy 自动处理连接错误并尝试重新连接。

流断开连接的可能原因有很多。
请参阅 Twitter API documentation on connecting to a streaming endpoint 的断开连接部分。
由于这些关键字的访问量非常大,因此您可能在流中落后太多。