我正在尝试通过 Web API 获取整个 Old Bailey Online 档案的一个子集。
我的问题是我的实现不仅速度很慢,而且服务器很快(大约 10 分钟)停止为我的请求提供服务。
目前我正在使用 urllib3 的开发版本:
import urllib3
retry = urllib3.util.Retry(total=1000, read=200, connect=200, backoff_factor=0.5)
timeout = urllib3.util.Timeout(connect=2.0, read=4.0)
http=urllib3.PoolManager(retry=retry, timeout=timeout, maxsize=10)
然后我用这个 http 池运行我的所有请求。我选择的数字相当荒谬,但最好的数字是 8(
每年,我需要针对不同的场景发出 70 个并发请求,超过 243 年。我尝试使用@shazow 的workerpool(根据https://stackoverflow.com/a/24046895/398969修改为与python3.4 一起使用),同时在一年内,多线程年内,这也不是很好。主要是由于服务器超时和我的无知。
DNS 查找是否引入了明显的延迟?我不能使用 Ip,因为域是 apache 虚拟主机(或者我可以吗?)
苏。真正的问题:我怎样才能从同一台服务器“很好地”及时地下载数十万次?我仍然希望它需要一天左右 8)