Python Tweepy流媒体API落后

Python Tweepy流媒体API落后,python,twitter,tweepy,Python,Twitter,Tweepy,我有一个python脚本,它读取关于特定体育赛事的所有tweet,并将它们输入数据库。当我在这个周末运行它时,每当游戏中发生重大事件时,脚本就会停止,我就会得到一个错误。它说这是与代码,但我不相信是这样的情况。我在Twitter的api站点上发现了以下内容: “落在后面 无法足够快地处理消息的客户端将被断开连接。跟踪客户端是否落后的一种方法是将您收到的推文的时间戳与当前时间进行比较。如果时间戳之间的差异随时间增加,则客户端处理推文的速度不如发送推文的速度快d、 另一种接收客户端落后通知的方法是在

我有一个python脚本,它读取关于特定体育赛事的所有tweet,并将它们输入数据库。当我在这个周末运行它时,每当游戏中发生重大事件时,脚本就会停止,我就会得到一个错误。它说这是与代码,但我不相信是这样的情况。我在Twitter的api站点上发现了以下内容:

“落在后面

无法足够快地处理消息的客户端将被断开连接。跟踪客户端是否落后的一种方法是将您收到的推文的时间戳与当前时间进行比较。如果时间戳之间的差异随时间增加,则客户端处理推文的速度不如发送推文的速度快d、 另一种接收客户端落后通知的方法是在建立流式连接时传递stall_warnings参数。”


我想知道这是不是发生在我身上的事情,什么是实现解决方案的最佳方式。

由于straming API创建了一个永久连接,
落后
从技术上讲意味着推特在这个连接中的发送速度要快于您的客户

解决方案很简单,您必须更快地处理推文,这就是优化您的环境。必须存在瓶颈,识别它们并正确处理。例如,当数据库每秒无法处理足够的插入时,可能是数据库延迟;当数据无法按需要的速度存储到磁盘时,可能是IO延迟;代码效率低下;高CPU负载;网络带宽限制等

在所有情况下都没有银弹,但一些明显的步骤包括:

  • 按原样存储从Twitter接收的数据,并在负载较低的窗口中进行后处理
  • 部署具有多个tweet消费者(处理器)和数据切分的集群
  • 使用更快的磁盘/一些raid配置可以加速IO
  • 推特查询优化,确保请求和处理尽可能少的推特
  • 代码优化
  • 迁移到具有更高带宽的数据中心
你有没有试过按照它说的去做?对于任何有机会帮助你的人来说,你需要提供一个解决方案,通过这样做,你甚至可以自己找到一个解决方案。我想,既然你已经很好地制作了这个列表,你不妨添加一些类似于“确保推特的请求尽可能狭窄”(或其他)的内容@JonClements谢谢你的建议,补充道。顺便说一句,我只是简单总结了我们在相关项目中的经验。我们对查询参数的广泛性没有任何问题:因为twitter限制了同时打开的连接的数量,所以有点不可避免地会有更广泛的请求,而不是一些狭窄的请求。所有其他步骤都是逐步实施的。