票.今天的数据抓取

票.今天的数据抓取



好久没写博客了。

回国了,放假了,也是时候写篇博客散散心了。

作为一个抓取数据的网站,抓取数据是最重要的一个环节。

piao.today是如何做到稳定抓取数据的呢?

余票趋势和实时余票功能 他们抓取数据的难点都分别在哪里呢?

让我们来盘点一下。

 

首先,说说余票趋势。

余票趋势最重要的是后台抓取,不可避免地需要谈到Worker进程。

本站的抓取分任务分发者和工作者。分发者负责从数据库中查找需要抓取的区间,然后分发给抓取的工作者。

在实践过程中,男性朋友们会遇到worker进程由于控制不当系统问题而提前射x停止工作(被系统莫名kill掉)。

所以,我们需要用crontab来进行一个小脚本,每隔一段时间查看worker数量,若不足则增加worker数量到一个数值。

这些脚本的用途就是用来获取当前运行了多少worker,若不足则重新添加。

因为Python的稳定性(而且作为后台运行的程序来说,只要内存足够,不管多少worker进程都放得下),所以没啥大问题。

但是,最近将实时余票功能升级了一下,改成允许用户抓取多日(预售期)余票(比如),发现服务器经常出现502(Bad Gateway)或者504(Gateway Timeout)错误。

这说明,我的php-fpm和Nginx的设置有问题,没有考虑到大并发和长连接的问题。

如果用户中途关闭了窗口,经常一个fpm进程就会卡在那里不知所措,被水淹没。

那么会导致整个站点因为fpm数量不够而卡死。

现在分散到多个vps上——四个服务器,三个在香港一个在日本,避免了把整个站带坏。

因为这些服务器距离国内都不远,所以抓取实时余票反馈给用户会很快。

以后应该研究一下对于这种情况的根本解决措施。

最近有时间先把筛选搞了吧。

总之吧,先mark下。

等着过两天驾照下来了好好研究研究。

Leave a Reply

Your email address will not be published. Required fields are marked *