No project description provided
Project description
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 418b0ab0cff7f4bafc6f2c8ce9b4d30874df9112f45253579852615f5b31c0b1 |
|
MD5 | 132ebd7b78b207ed9ebe935b6b891e34 |
|
BLAKE2b-256 | fe425c47afb64027263b12c3c5d199ecba1fb0797d4614c04b43a8deaa63cace |
File details
Details for the file zconcurrent-0.0.2a0-py3-none-any.whl
.
File metadata
- Download URL: zconcurrent-0.0.2a0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf3c7b24f51c6f4dfe1baf27c1c801b59c6d1ad7d464ba5eead5bc67d792cf49 |
|
MD5 | 377f904efd4c50074e6fb62b1a107012 |
|
BLAKE2b-256 | 3473d51e4d58652aaa9d0ca79a3498151b542d2082b517ad14810a0349814249 |