可组合的python执行器和未来库
more-executors的Python项目详细描述
更多执行者
此库用于
^{Executor
实现的集合,以便
扩展Future
对象的行为。
功能
- 隐含重试的未来
- 执行器关闭时隐式取消的期货
- 超时后隐式取消的期货
- 具有转换输出值的未来(同步和异步)
- 由调用方提供的轮询函数解决的未来问题
- 限制一次运行的期货数量
- 同步执行器
- 用
asyncio
桥接 - 创建执行器的便利api
concurrent.futures
有关用法的详细信息,请参见API documentation。
示例
这个例子结合了map和retry执行器来为 并发运行的http请求,解码 以后并在出错时重试。
importrequestsfromconcurrent.futuresimportas_completedfrommore_executorsimportExecutorsdefget_json(response):response.raise_for_status()return(response.url,response.json())deffetch_urls(urls):# Configure an executor:# - run up to 4 requests concurrently, in separate threads# - run get_json on each response# - retry up to several minutes on any errorsexecutor=Executors.\ thread_pool(max_workers=4).\ with_map(get_json).\ with_retry()# Submit requests for each given URLfutures=[executor.submit(requests.get,url)forurlinurls]# Futures API works as normal; we can block on the completed# futures and map/retry happens implicitlyforfutureinas_completed(futures):(url,data)=future.result()do_something(url,data)
开发
virtualenv
和pip
可用于从本地安装此项目
来源:
virtualenv ~/dev/python
. ~/dev/python/bin/activate
git clone https://github.com/rohanpm/more-executors
cd more-executors
pip install --editable .
可以使用pytest运行自动测试:
pip install -r test-requirements.txt
py.test
针对https://github.com/rohanpm/more-executors提交拉取请求。
许可证
此程序是免费软件:您可以重新分发和/或修改 根据由 自由软件基金会,或者许可证的第3版,或者 (由您选择)任何更高版本。