python 3 requests_futures对不同进程中同一服务器的请求

时间:2017-03-07 16:06:57

标签: parallel-processing python-requests python-3.5

我正在寻找第一次将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)

上面的代码对我有用,但是,我需要一些帮助来根据我的需要定制它。

  1. 我想查询同一台服务器,比方说50次(例如50个不同的httpbin.org/get?...请求)。除了定义future_one,...... _two之外,将这些分成不同的未来会是什么好方法?

  2. 我正在考虑使用不同的流程。根据模块文档,它应该只是上面代码的前三行中的一个变化:

    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.
    

    如何正常运行?

0 个答案:

没有答案