Skip to main content

Synchronus Wrapper for Async Code

Project description

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

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

async_services-1.0.2.tar.gz (5.2 kB view details)

Uploaded Source

File details

Details for the file async_services-1.0.2.tar.gz.

File metadata

  • Download URL: async_services-1.0.2.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for async_services-1.0.2.tar.gz
Algorithm Hash digest
SHA256 63e9aba894cc81365441fe739eca5654e36874a0585dbcba2a088c9a48e7e1ab
MD5 f9ed17895cfaaf25b10be10011e6e1b2
BLAKE2b-256 78c81640d203fb77efede6c5ce0cee002b0c8214e80cc5722a2dcc3ef55b947d

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