معرفی شرکت ها


aio-request-0.1.9a4


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

Various strategies for sending requests
ویژگی مقدار
سیستم عامل -
نام فایل aio-request-0.1.9a4
نام aio-request
نسخه کتابخانه 0.1.9a4
نگهدارنده []
ایمیل نگهدارنده []
نویسنده Yury Pliner
ایمیل نویسنده yury.pliner@gmail.com
آدرس صفحه اصلی https://github.com/Pliner/aio-request
آدرس اینترنتی https://pypi.org/project/aio-request/
مجوز MIT
# aio-request This library simplifies an interaction between microservices: 1. Allows sending requests using various strategies 1. Propagates a deadline and a priority of requests 1. Exposes client/server metrics Example: ```python import aiohttp import aio_request async with aiohttp.ClientSession() as client_session: client = aio_request.setup( transport=aio_request.AioHttpTransport(client_session), endpoint="http://endpoint:8080/", ) response_ctx = client.request( aio_request.get("thing"), deadline=aio_request.Deadline.from_timeout(5) ) async with response_ctx as response: pass # process response here ``` # Request strategies The following strategies are supported: 1. Single attempt. Only one attempt is sent. 1. Sequential. Attempts are sent sequentially with delays between them. 1. Parallel. Attempts are sent in parallel one by one with delays between them. Attempts count and delays are configurable. Example: ```python import aiohttp import aio_request async with aiohttp.ClientSession() as client_session: client = aio_request.setup( transport=aio_request.AioHttpTransport(client_session), endpoint="http://endpoint:8080/", ) response_ctx = client.request( aio_request.get("thing"), deadline=aio_request.Deadline.from_timeout(5), strategy=aio_request.parallel_strategy( attempts_count=3, delays_provider=aio_request.linear_delays(min_delay_seconds=0.1, delay_multiplier=0.1) ) ) async with response_ctx as response: pass # process response here ``` # Deadline & priority propagation To enable it for the server side a middleware should be configured: ```python import aiohttp.web import aio_request app = aiohttp.web.Application(middlewares=[aio_request.aiohttp_middleware_factory()]) ``` # Expose client/server metrics To enable client metrics a metrics provider should be passed to the transport: ```python import aiohttp import aio_request async with aiohttp.ClientSession() as client_session: client = aio_request.setup( transport=aio_request.AioHttpTransport( client_session, metrics_provider=aio_request.PROMETHEUS_METRICS_PROVIDER ), endpoint="http://endpoint:8080/", ) ``` It is an example of how it should be done for aiohttp and prometheus. To enable client metrics a metrics provider should be passed to the middleware: ```python import aiohttp.web import aio_request app = aiohttp.web.Application( middlewares=[ aio_request.aiohttp_middleware_factory( metrics_provider=aio_request.PROMETHEUS_METRICS_PROVIDER ) ] ) ``` # Circuit breaker ```python import aiohttp import aio_request async with aiohttp.ClientSession() as client_session: client = aio_request.setup_v2( transport=aio_request.AioHttpTransport(client_session), endpoint="http://endpoint:8080/", circuit_breaker=aio_request.DefaultCircuitBreaker[str, int]( break_duration=1.0, sampling_duration=1.0, minimum_throughput=2, failure_threshold=0.5, ), ) ``` In the case of requests count >= minimum throughput(>=2) in sampling period(1 second) the circuit breaker will open if failed requests count/total requests count >= failure threshold(50%). ## v0.1.27 (2023-02-16) * [Maintenance release](https://github.com/anna-money/aio-request/compare/v0.1.26...v0.1.27) ## v0.1.26 (2022-11-02) * [Add python 3.11 support](https://github.com/anna-money/aio-request/pull/159) ## v0.1.25 (2022-08-25) * [Reverted: URL-encode path_parameters](https://github.com/anna-money/aio-request/pull/155) - let user decide what to do ## v0.1.24 (2022-07-04) * [URL-encode path_parameters](https://github.com/anna-money/aio-request/pull/146) ## v0.1.23 (2022-02-08) * [Reject throttling(too many requests) status code](https://github.com/anna-money/aio-request/pull/123) ## v0.1.22 (2022-01-08) * Return default json expected content_type to "application/json" * [Release aiohttp response instead of close](https://github.com/Pliner/aio-request/pull/108) * [Validate json content-type](https://github.com/Pliner/aio-request/pull/109) ## v0.1.21 (2022-01-05) * Content type should be None in Response.json() ## v0.1.20 (2022-01-05) * [Do not expect json content type by default](https://github.com/Pliner/aio-request/pull/106) ## v0.1.19 (2021-11-01) * [Support async-timeout 4.0+](https://github.com/Pliner/aio-request/pull/86) ## v0.1.18 (2021-09-08) * [Reexport explicitly](https://github.com/Pliner/aio-request/pull/74) ## v0.1.17 (2021-09-01) * [Fix patch/patch_json visibility](https://github.com/Pliner/aio-request/pull/73) ## v0.1.16 (2021-09-01) * [Support patch method](https://github.com/Pliner/aio-request/pull/72) ## v0.1.15 (2021-09-01) * [Clean up resources in single shield](https://github.com/Pliner/aio-request/pull/71) ## v0.1.14 (2021-08-18) * [Keys should be materialized if dict is changed in loop](https://github.com/Pliner/aio-request/pull/66) ## v0.1.13 (2021-08-15) * [Circuit breaker](https://github.com/Pliner/aio-request/pull/65) ## v0.1.12 (2021-07-21) * [Basic repr implementation](https://github.com/Pliner/aio-request/commit/adaa4888c3d372fa65f3dd5eb6113ab68f46de24) ## v0.1.11 (2021-07-21) * Fix Request.update_headers, add Request.extend_headers [#59](https://github.com/Pliner/aio-request/pull/59) ## v0.1.10 (2021-07-20) * Add Response.is_json property to check whether content-type is json compatible [#58](https://github.com/Pliner/aio-request/pull/58) * Tracing support [#54](https://github.com/Pliner/aio-request/pull/54), * [Configuration](https://github.com/Pliner/aio-request/commit/f0e1904f4d87daf7c242a834168c0f1b25dd86d5) of a new pipeline


نیازمندی

مقدار نام
<7.0,>=4.5 multidict
<2.0,>=1.0 yarl


زبان مورد نیاز

مقدار نام
>=3.8 Python


نحوه نصب


نصب پکیج whl aio-request-0.1.9a4:

    pip install aio-request-0.1.9a4.whl


نصب پکیج tar.gz aio-request-0.1.9a4:

    pip install aio-request-0.1.9a4.tar.gz