Skip to main content

Async to sync converter

Project description

Syncer

https://img.shields.io/pypi/v/syncer.svg https://img.shields.io/pypi/pyversions/syncer.svg https://img.shields.io/travis/miyakogi/syncer.svg https://codecov.io/github/miyakogi/syncer/coverage.svg?branch=master

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

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

MIT license

Credits

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.

Source Distribution

syncer-1.0.2.tar.gz (9.9 kB view details)

Uploaded Source

Built Distributions

syncer-1.0.2.linux-x86_64.tar.gz (3.0 kB view details)

Uploaded Source

syncer-1.0.2-py3.5.egg (3.4 kB view details)

Uploaded Source

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

Hashes for syncer-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3c6b4ddb18d1ad29bbdb7572f1cd0b7ad4c0fe907ccc67623b6448e49a18adce
MD5 867344c85f31155859cc385e97a9b5cc
BLAKE2b-256 3c2ddef079f131897151530557321ce377fc6bcca1dd9cb475917f299d1fcea2

See more details on using hashes here.

File details

Details for the file syncer-1.0.2.linux-x86_64.tar.gz.

File metadata

File hashes

Hashes for syncer-1.0.2.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 96b30579491700964356be9153504ccdeda09a123673553b4660872d72516c45
MD5 c8a007446e154e794b565a8e3ff30b2e
BLAKE2b-256 2c206ddbb609db6f990bcea86c47d1082737dac09b62be5703ee2e1ba41c2bcd

See more details on using hashes here.

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

Hashes for syncer-1.0.2-py3.5.egg
Algorithm Hash digest
SHA256 e724d3606526b153bd9130d29541a70bd4b113048eef4d803a19469103f738d4
MD5 f096dae0e014bc4c84242705dc1bef5e
BLAKE2b-256 70908e6debf9bdeb709dabe74e3f897e380ec12f20308d683052f41ce5e6084d

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