Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我有一个python脚本,可读取有关特定体育赛事的所有推文,并将它们输入数据库。每当我在周末运行它时,每次游戏中发生大事件时,脚本都会停止运行,并且会出现错误。它说是与代码有关的,但我认为情况并非如此。我在Twitter的api网站上找到了这个:
“落后
无法快速处理邮件的客户端将被断开连接。跟踪客户是否落后的一种方法是将收到的推文的时间戳与当前时间进行比较。如果时间戳之间的时间差随时间增加,则客户端处理Tweet的速度不如传递速度快。接收客户端落后通知的另一种方法是在建立流连接时传递stall_warnings参数。”
我想知道这是发生在我身上的事情,什么是实现解决方案的最佳方法。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我有一个python脚本,可读取有关特定体育赛事的所有推文,并将它们输入数据库。每当我在周末运行它时,每次游戏中发生大事件时,脚本都会停止运行,并且会出现错误。它说是与代码有关的,但我认为情况并非如此。我在Twitter的api网站上找到了这个:
“落后
无法快速处理邮件的客户端将被断开连接。跟踪客户是否落后的一种方法是将收到的推文的时间戳与当前时间进行比较。如果时间戳之间的时间差随时间增加,则客户端处理Tweet的速度不如传递速度快。接收客户端落后通知的另一种方法是在建立流连接时传递stall_warnings参数。”
我想知道这是发生在我身上的事情,什么是实现解决方案的最佳方法。
最佳答案
当straming API创建永久连接时,Falling behind
从技术上讲意味着将推文放入此连接的速度比客户端消耗的速度更快。
解决方案很简单,您必须更快地处理tweet,即优化您的环境。必须有瓶颈/瓶颈,识别它们并正确处理。例如,可能是数据库等待时间,即您的数据库无法每秒处理足够的插入,IO等待时间,即数据无法按需要快速存储到磁盘时。代码效率低下;高CPU负载;网络带宽限制等
在所有情况下都没有灵丹妙药,但是一些明显的步骤包括:
将从Twitter接收的数据按原样存储,并在较低负载的窗口中进行后处理;
部署具有多个tweet使用者(处理器)和数据分片的集群;
使用更快的磁盘/一些RAID配置可以加快IO速度;
优化推文查询,确保请求和处理尽可能少的推文;
代码优化;
迁移到带宽更高的数据中心;
09-05 01:52