Skip to main content

Async Services

Build Status

Run fast asynchronous code from a synchronous code. Async Services provide a synchronous wrapper to run third party asynchronous code or any coroutine for that matter in a synchronous way from a synchronous code.

Installation

pip install async_services

For Development Purposes

Install project Dependencies

pip install -r requirements.txt
pip install -U .

Running the tests

You can run the tests with the following command

pytest .

And coding style tests

pycodestyle .

Example Usage

from async_services.core import run_coro, run_manager, stop_manager
from async_services.core.manager import CoroStatus
import asyncio

async def coroutine(seconds=1, raise_exception=False):
    await asyncio.sleep(seconds)
    if raise_exception:
        raise Exception("Sample Exception")
    return "Hello World"

run_manager()
result = run_coro(coroutine(), block=True)
print(result)
assert result[0] == CoroStatus.Completed
assert result[1] == "Hello World"
stop_manager()

Output

Result will be a tuple consisting of two values (status, result) status will be a integer between 0 and 5 and it defines the state of the coruotine

(1, 'Hello World')

Coroutine Status

Presently there are six status of a coruotine

  1. Queued = 0 -> Coroutine is still queued waiting to be executed or is being executed
  2. Completed = 1 -> Coroutine has Completed Successfully
  3. Failed = 2 -> Coroutine Completed Successfully , But callback function raised an exception
  4. Cancelled = 3 -> Coroutine was Cancelled
  5. Timeout = 4 -> Coroutine did not complete in the given time
  6. CoroutineException = 5 -> Coroutine Itself Raised an Exception

Authors

  • Ankit Kathuria - Initial work

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • Hat tip to anyone whose code was used
  • Inspiration
  • etc

Metadata

Release files for async-services 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for async-services 1.0.2
File Size Uploaded
async_services-1.0.2.tar.gz 5.2 kB Details

Release files / async_services-1.0.2.tar.gz

Download URL async_services-1.0.2.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
63e9aba894cc81365441fe739eca5654e36874a0585dbcba2a088c9a48e7e1ab
BLAKE2b-256 checksum
How to use checksums
78c81640d203fb77efede6c5ce0cee002b0c8214e80cc5722a2dcc3ef55b947d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

Release history Release notifications | RSS feed

This release

1.0.2 This release

1 release file

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page