Skip to main content

A Celery-like event loop with asyncio and no more dependencies

Project description

A Celery-like event loop with `asyncio` and no dependencies

It runs an asyncio event loop in a separate thread, drives native coroutines within the loop, and then returns the future in an asynchronous manner.

Dependency

It requires Python 3.5+.

Installation

$ git clone https://github.com/dgkim5360/asyncloop.git
$ cd asyncloop
asyncloop$ python setup.py install

Getting started

import asyncio as aio

from asyncloop import AsyncLoop


# A simple job, which should be a native coroutine
async def job_to_wait(sleep_sec):
    await aio.sleep(sleep_sec)
    return sleep_sec


# A simple callback
def callback(fut):
    if fut.cancelled():
        print('CANCELLED:', fut)
    elif fut.done():
        print('DONE:', fut)
        print('RESULT:', fut.result()


# AsyncLoop starts
aloop = AsyncLoop()  # <AsyncLoop(Thread-##, initial)>
aloop.start()  # <AsyncLoop(Thread-##, started ##########)>

# Submit a job and be free to work on
# it returns an AsyncJob object, a simple wrapper of concurrent.Future
ajob = aloop.submit(job_to_wait(10), callback)
ajob  # <AsyncJob at 0x####>

# After 10 seconds the callback activated
# DONE: <Future at 0x#### state=finished returned int>
# RESULT: 10

# Get a result
ret = ajob.result()  # 10

# You MUST stop the aloop before exit or destroy
aloop.stop()  # <AsyncLoop(Thread-##, stopped ##########)>

So far, that’s all.

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

asyncloop-0.0.1.dev2.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

asyncloop-0.0.1.dev2-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file asyncloop-0.0.1.dev2.tar.gz.

File metadata

File hashes

Hashes for asyncloop-0.0.1.dev2.tar.gz
Algorithm Hash digest
SHA256 c53ded99c97be8059213b2f12349c58e053f3f4c3f35aa993f7e1cb210aa3c13
MD5 df448cf26d864f1f07c4e0c16341a977
BLAKE2b-256 9832024effdfdc7ed82df04d0c6f2aa7cd39d763bf74e086ba7da4e492f7d97b

See more details on using hashes here.

File details

Details for the file asyncloop-0.0.1.dev2-py3-none-any.whl.

File metadata

File hashes

Hashes for asyncloop-0.0.1.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 a12e50e2934e5cee7893c0abf46ea3d267d7c602448c3bf16feddca7a989f664
MD5 39524eb074ed683df7d9becb1dc3a88f
BLAKE2b-256 3500cee47ed2df703f0543c46bf63042e7f42e96b2758362aad60dbb958a3ada

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