跳转到主要内容

可组合的Python执行器和future库

项目描述

more-executors

Build Status Maintainability Test Coverage

此库旨在与concurrent.futures模块一起使用。它包括一系列Executor实现,以便扩展Future对象的行为。

特性

  • 具有隐式重试的Future
  • 具有在执行器关闭时隐式取消的Future
  • 具有超时后隐式取消的Future
  • 具有转换后的输出值(同步和异步)的Future
  • 由调用者提供的轮询函数解决的Future
  • 限制同时运行的未来数量
  • 同步执行器
  • 桥接concurrent.futuresasyncio
  • 创建执行器的便利API
  • 使用Prometheus进行仪表化

有关使用方法的详细信息,请参阅API文档

示例

此示例结合了map和retry执行器,以创建并发运行HTTP请求的未来,并在未来中解码JSON响应并在出错时重试。

import requests
from concurrent.futures import as_completed
from more_executors import Executors


def get_json(response):
    response.raise_for_status()
    return (response.url, response.json())


def fetch_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 errors
    executor = Executors.\
        thread_pool(max_workers=4).\
        with_map(get_json).\
        with_retry()

    # Submit requests for each given URL
    futures = [executor.submit(requests.get, url)
               for url in urls]

    # Futures API works as normal; we can block on the completed
    # futures and map/retry happens implicitly
    for future in as_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提交拉取请求。

许可

本程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何更高版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

more-executors-2.11.4.tar.gz (52.3 kB 查看哈希值)

上传时间

构建分布

more_executors-2.11.4-py2.py3-none-any.whl (71.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面