异步:
是一个非阻塞的运行模式,就是在运行主程序的时候,如果其中有了耗时操作,程序不会在这操作进行停留,而会继续执行下面的代码
拓展:
其中普及一下:常见的阻塞形式有:网络I/O操作,磁盘的I/O操作,用户输入时候的阻塞.
在爬虫项目中,一般会使用异步进行爬取,从而提高运行效率,因为在发送请求以后,需要依靠网络通信来返回响应,其中肯定会涉及一些延时,这时候就可以进行异步跳过,在延时的时候继续发送下一次请求,然后如果有响应回来了,再处理响应
=============================(华丽分界线)=================================
分布式:
分布式就是一个任务拆分成几个子任务然后不考虑任务间的依赖关系,同时执行子任务.
在爬虫中是把一个请求队列放在数据库里面,可以在里面顺便进行去从操作,既爬过的页面,就不继续爬取了,
然后可以开多个线程或者进程同时进行发送请求
拓展:
其中会涉及到集群的概念,集群是同一个任务部署到多个服务器上,然后分布式是一个任务拆分多个子任务然后部署到不同的服务器上.
分布式和集群是最常见的两种多重任务处理的方法,
=================================总结====================================
异步和分布式同时利用在爬虫中时,此时的运作模式就是,创建一个线程池或者一个协程池的时候,里面集成了异步请求,就是把耗时操作的任务
分发到线程或者协程里面,然后进行异步发送,如果子任务遇到阻塞了,就用内置callback参数切换线程或者协程,继续执行下一个子任务,这样就有效的提高了任务的执行速度.