Skip to main content

Async to sync converter

Project description


Syncer is an async-to-sync converter for python.


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


At the command line:

$ pip install syncer


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.
    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
            asyncio.get_event_loop().run_until_complete(async_fun()), 1)


MIT license


This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Project details

Download files

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

Files for syncer, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size syncer-1.0.0.linux-x86_64.tar.gz (3.0 kB) File type Dumb Binary Python version any Upload date Hashes View
Filename, size syncer-1.0.0-py3.5.egg (3.5 kB) File type Egg Python version 3.5 Upload date Hashes View
Filename, size syncer-1.0.0.tar.gz (9.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page