我正在寻找第一次将URL请求并行化到python中的单个web服务器上。
我想使用requests_futures
来执行此任务,因为似乎可以使用ProcessPoolExecutor
将进程真正拆分到多个核心上。
模块文档中的示例代码是:
from concurrent.futures import ThreadPoolExecutor
from requests_futures.sessions import FuturesSession
session = FuturesSession(executor=ThreadPoolExecutor(max_workers=2))
future_one = session.get('http://httpbin.org/get')
future_two = session.get('http://httpbin.org/get?foo=bar')
response_one = future_one.result()
print('response one status: {0}'.format(response_one.status_code))
print(response_one.content)
response_two = future_two.result()
print('response two status: {0}'.format(response_two.status_code))
print(response_two.content)
上面的代码对我有用,但是,我需要一些帮助来根据我的需要定制它。
我想查询同一台服务器,比方说50次(例如50个不同的httpbin.org/get?...请求)。除了定义future_one
,...... _two
之外,将这些分成不同的未来会是什么好方法?
我正在考虑使用不同的流程。根据模块文档,它应该只是上面代码的前三行中的一个变化:
from concurrent.futures import ProcessPoolExecutor
from requests_futures.sessions import FuturesSession
session = FuturesSession(executor=ProcessPoolExecutor(max_workers=2))
如果我执行此操作,我会收到以下错误:
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
如何正常运行?