大量拉取网络数据的策略总结

这两天在做需求的时候,遇到了一个难题,背景是这样的,

业务需要,我们要不停的抓取一个网址的数据,主要是通过两个参数A, B决定的结果。 下面来讨论一下,我遇到的问题:

1. A大约有200种可能, B的集合数也有几百个,对于这样的程序,如果在本地运行,当然是很简单的,直接两个循环搞定(可能A在外,还是B在外,需要根据具体操作考量一下)。但是对于网络请求来说就麻烦了:

1. 有可能你f发的请求包会丢掉,2. 有可能回包会丢掉, 3 有可能对方服务繁忙拒绝掉。。。等等一系列问题。

这样的情况下,你怎么保证程序的稳定运行?

一开始我想的很简单,程序直接退出了,但是问题时,这个可能要跑几十个小时的程序,即使程序可以从中断的位置开始继续执行,但我不可能一直盯着它吧?所以结果很自然就出来了,错误的就写个log了,回头的修复程序,重新读log,把每一条都执行完毕。这个的问题是,不会因为一个请求失败而卡住,但是可能log会非常大

另外一种解决方式,当一次请求失败后,重试几次,实在不行再写log,这个的好处是log会相对较小,但是问题是可能会多发请求。




第二个问题,比较头疼,上w个请求,如果对方的相应比较慢,每个请求可能要等个3,5秒,简单算一下,这个程序的执行将会以天为单位来计算了。

如果解决呢? 初步想法是,多线程并行,这样至少可以减少几倍的运行时间。而且公共处理逻辑可以是一样的,只需要花点心思吧初始集合划分好就好。

知易行难,这个还没有实现啊~>_<~

而且,万一对方的网站顶不住你这样的多线程访问咋办?泪奔啊,程序员的生命基本上 就耗在这样的等待中了



----------------------------------------分割线------------------------------

接下来准备去做LCD、IGBT、HMI方面的电商


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值