Python Tweepy流媒体API落后
我有一个python脚本,它读取关于特定体育赛事的所有tweet,并将它们输入数据库。当我在这个周末运行它时,每当游戏中发生重大事件时,脚本就会停止,我就会得到一个错误。它说这是与代码,但我不相信是这样的情况。我在Twitter的api站点上发现了以下内容: “落在后面 无法足够快地处理消息的客户端将被断开连接。跟踪客户端是否落后的一种方法是将您收到的推文的时间戳与当前时间进行比较。如果时间戳之间的差异随时间增加,则客户端处理推文的速度不如发送推文的速度快d、 另一种接收客户端落后通知的方法是在建立流式连接时传递stall_warnings参数。”Python Tweepy流媒体API落后,python,twitter,tweepy,Python,Twitter,Tweepy,我有一个python脚本,它读取关于特定体育赛事的所有tweet,并将它们输入数据库。当我在这个周末运行它时,每当游戏中发生重大事件时,脚本就会停止,我就会得到一个错误。它说这是与代码,但我不相信是这样的情况。我在Twitter的api站点上发现了以下内容: “落在后面 无法足够快地处理消息的客户端将被断开连接。跟踪客户端是否落后的一种方法是将您收到的推文的时间戳与当前时间进行比较。如果时间戳之间的差异随时间增加,则客户端处理推文的速度不如发送推文的速度快d、 另一种接收客户端落后通知的方法是在
我想知道这是不是发生在我身上的事情,什么是实现解决方案的最佳方式。由于straming API创建了一个永久连接,
落后
从技术上讲意味着推特在这个连接中的发送速度要快于您的客户
解决方案很简单,您必须更快地处理推文,这就是优化您的环境。必须存在瓶颈,识别它们并正确处理。例如,当数据库每秒无法处理足够的插入时,可能是数据库延迟;当数据无法按需要的速度存储到磁盘时,可能是IO延迟;代码效率低下;高CPU负载;网络带宽限制等
在所有情况下都没有银弹,但一些明显的步骤包括:
- 按原样存储从Twitter接收的数据,并在负载较低的窗口中进行后处理李>
- 部署具有多个tweet消费者(处理器)和数据切分的集群李>
- 使用更快的磁盘/一些raid配置可以加速IO李>
- 推特查询优化,确保请求和处理尽可能少的推特李>
- 代码优化李>
- 迁移到具有更高带宽的数据中心李>