Async to sync converter
Project description
Syncer
Syncer is an async-to-sync converter for python.
Documentation: https://miyakogi.github.io/syncer/
Source code: https://github.com/miyakogi/syncer/
Features
Sometimes (mainly in test) we need to convert asynchronous functions to normal, synchronous functions and run them synchronously. It can be done by ayncio.get_event_loop().run_until_complete(), but it’s quite long…
Syncer makes this conversion easy.
Convert coroutine-function (defined by aync def) to normal (synchronous) function
Run coroutines synchronously
Support both async def and decorator (@asyncio.coroutine) style
Install
At the command line:
$ pip install syncer
Usage
This module has only one function: syncer.sync.
from syncer import sync
async def async_fun():
...
return 1
b = sync(async_fun) # now b is synchronous
assert 1 == b()
To test the above async_fun in asynchronous test functions:
import unittest
class TestA(unittest.TestCase):
# ``sync`` can be used as decorator.
# The decorated function becomes synchronous.
@sync
async def test_async_fun(self):
self.assertEqual(await async_fun(), 1)
Or, keep test functions synchronous and get results synchronously:
class TestA(unittest.TestCase):
def test_async_fun(self):
# run coroutine and return the result
self.assertEqual(sync(async_fun()), 1)
# This is equivalent to below, just a shortcut
self.assertEqual(
asyncio.get_event_loop().run_until_complete(async_fun()), 1)
More examples/use-cases will be found in test.
License
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
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
Built Distributions
File details
Details for the file syncer-1.0.2.tar.gz
.
File metadata
- Download URL: syncer-1.0.2.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c6b4ddb18d1ad29bbdb7572f1cd0b7ad4c0fe907ccc67623b6448e49a18adce |
|
MD5 | 867344c85f31155859cc385e97a9b5cc |
|
BLAKE2b-256 | 3c2ddef079f131897151530557321ce377fc6bcca1dd9cb475917f299d1fcea2 |
File details
Details for the file syncer-1.0.2.linux-x86_64.tar.gz
.
File metadata
- Download URL: syncer-1.0.2.linux-x86_64.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96b30579491700964356be9153504ccdeda09a123673553b4660872d72516c45 |
|
MD5 | c8a007446e154e794b565a8e3ff30b2e |
|
BLAKE2b-256 | 2c206ddbb609db6f990bcea86c47d1082737dac09b62be5703ee2e1ba41c2bcd |
File details
Details for the file syncer-1.0.2-py3.5.egg
.
File metadata
- Download URL: syncer-1.0.2-py3.5.egg
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e724d3606526b153bd9130d29541a70bd4b113048eef4d803a19469103f738d4 |
|
MD5 | f096dae0e014bc4c84242705dc1bef5e |
|
BLAKE2b-256 | 70908e6debf9bdeb709dabe74e3f897e380ec12f20308d683052f41ce5e6084d |