Skip to main content

No project description provided

Project description

CI Workflow Ruff Poetry

Overview

This project allows you to execute a list of http operations asynchronously from within an synchronous context.

It does not care whether you should do this. It simply allows you to do so if you desire.

Installing

The package is available via pip.

pip install zconcurrent

If you're not on Windows, install the uvloop extra to increase performance.

pip install "zconcurrent[uvloop]"

Usage

The package can be imported as shown:

from zconcurrent.zsession import zSession, RequestMap, RequestResults
Class Description
zSession Session object containing collection of requests to send
RequestMap Container object that stores all info about an individual request to send
RequestResults Container object that stores the request responses and any exceptions raised

Example

# Create RequestMap objects
req1 = RequestMap(
    url="https://baconipsum.com/api",
    httpOperation="GET",
    queryParams={"type": "meat-and-filler", "format": "json"},
)
req2 = RequestMap(
    url="https://baconipsum.com/api",
    httpOperation="GET",
    queryParams={"type": "all-meat", "format": "json"},
)
req3 = RequestMap(
    url="https://baconipsum.com/api",
    httpOperation="GET",
    queryParams={"type": "meat-and-filler", "format": "json"},
)

# Create zSession and call sendRequests()
session = zSession(requestMaps=[req1, req2, req3])
reqResps: RequestResults = session.sendRequests(return_exceptions=True)

# Handle exceptions raised for individual requests
if len(reqResps.taskExceptions) > 0:
    print("Handling exceptions")

# Handle responses for individual requests
for resp in requestResponses:
    httpVerb = resp.requestMap.httpOperation
    print(f"Evaluating response for {httpVerb} request to {resp.requestMap.url}")
    print(f"Status Code: {resp.statusCode}")
    if resp.body is not None:
        print(resp.body)

RequestMap Class

class RequestMap(msgspec.Struct):
    url: str
    httpOperation: Literal["GET", "POST", "PUT", "PATCH", "OPTIONS", "DELETE"]
    body: dict | None = None
    queryParams: dict[str, str] | None = None
    headers: dict[str, str] | None = None

RequestResponse Class

class RequestResponse(msgspec.Struct):
    requestMap: RequestMap
    statusCode: int
    body: dict | None = None

RequestResults Class

@dataclass
class RequestResults:
    requestResponses: list[RequestResponse]
    taskExceptions: list[BaseException]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zconcurrent-0.0.2a0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

zconcurrent-0.0.2a0-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file zconcurrent-0.0.2a0.tar.gz.

File metadata

  • Download URL: zconcurrent-0.0.2a0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for zconcurrent-0.0.2a0.tar.gz
Algorithm Hash digest
SHA256 418b0ab0cff7f4bafc6f2c8ce9b4d30874df9112f45253579852615f5b31c0b1
MD5 132ebd7b78b207ed9ebe935b6b891e34
BLAKE2b-256 fe425c47afb64027263b12c3c5d199ecba1fb0797d4614c04b43a8deaa63cace

See more details on using hashes here.

File details

Details for the file zconcurrent-0.0.2a0-py3-none-any.whl.

File metadata

File hashes

Hashes for zconcurrent-0.0.2a0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf3c7b24f51c6f4dfe1baf27c1c801b59c6d1ad7d464ba5eead5bc67d792cf49
MD5 377f904efd4c50074e6fb62b1a107012
BLAKE2b-256 3473d51e4d58652aaa9d0ca79a3498151b542d2082b517ad14810a0349814249

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page