- Madman
- ·
Python 重试功能
有时候 HTTP 请求失败了,可能是网络连接不稳定或者后端接口服务暂时未启动等原因,此时我们希望请求失败后能够进行一定次数的重试(retry),从而最大限度保证请求能够最终成功。除了使用装饰器来实现以外,requests 模块中使用的 urllib3 模块默认自带重试功能
有时候 HTTP 请求失败了,可能是网络连接不稳定或者后端接口服务暂时未启动等原因,此时我们希望请求失败后能够进行一定次数的重试(retry),从而最大限度保证请求能够最终成功。除了使用装饰器来实现以外,requests 模块中使用的 urllib3 模块默认自带重试功能
本文介绍如何流式下载大文件,并实现断点续传功能。根据顺序下载大文件的字节和乱序下载大文件的各个分段,分别进行了多线程或协程并发,还实现了多个大文件并发下载
I/O 密集型最适合使用多线程,当然包括网络 I/O。我们要下载多张图片,每次去下载一张图片,就是发起一次 HTTP 请求(使用 TCP 协议),客户端首先通过 socket.socket() 创建一个套接字,然后调用 connect() 方法经过三次握手与服务端建立 TCP 连接,这个过程是阻塞的。建立连接后,客户端将请求(要访问图片资源)发送给服务端,然后服务端返回响应,客户端用...
I/O 密集型适合使用多线程,CPU 密集型适合使用多进程。当然,我们还是可以利用多进程将下载速度有一定的提升。Python 3 中可以使用 multiprocessing 模块和 concurrent.futures.ProcessPoolExecutor 进程池模块,实现多进程
从这一篇开始,将介绍如何用 Python 3 实现网络爬虫,多任务快速抓取你想要的数据。每一次 HTTP 请求/响应都要经过 TCP 连接、客户端发送请求数据、服务端分多次返回响应数据,这个过程中,客户端的 CPU 在等待网络 I/O 时会阻塞。Python 依序下载是一个主线程依次等待每个网络 I/O 完成,而多线程是多个线程并发(不是并行)等待多个网络 I/O,当一个线程因为等待网络...