可组合的python执行器和未来库

more-executors的Python项目详细描述


更多执行者

Build StatusMaintainabilityTest Coverage

此库用于 ^{} 模块。它包括一个Executor实现的集合,以便 扩展Future对象的行为。

功能

  • 隐含重试的未来
  • 执行器关闭时隐式取消的期货
  • 超时后隐式取消的期货
  • 具有转换输出值的未来(同步和异步)
  • 由调用方提供的轮询函数解决的未来问题
  • 限制一次运行的期货数量
  • 同步执行器
  • asyncio
  • 桥接concurrent.futures
  • 创建执行器的便利api

有关用法的详细信息,请参见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)

开发

virtualenvpip可用于从本地安装此项目 来源:

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版,或者 (由您选择)任何更高版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
未处理java Google PubSub-resent消息   java CannotAcquireLockException+LockAcquisitionException   atlassian fisheye如何处理“C:\Program Files\Java\jre7\bin\server\JVM.dll”中缺少“服务器”JVM的问题   jboss 6.3 eap linux环境中ear部署中的java问题   java SQL顺序字符串主键   java ascii shift程序几乎适用于整个字符串   java中excel工作表中的一条记录插入多条记录所需的sql逻辑   java这个方法如何计算Rational(1)。hashCode()?1的分子或分母本身就是1   java为什么在循环中的数组中分配引用后会出现NullPointerException?   java Seam 2中内置工厂的优势是什么   远程运行Java项目的eclipse   标记化Java中的标记化源代码   java从大文件中读取前缀后的值   java使用EntityManager调用PostgreSQL过程   java阅读行每隔一行跳过一行