Skip to main content

Boilerplate for asyncio applications

Project description

https://travis-ci.org/cjrh/aiorun.svg?branch=master https://coveralls.io/repos/github/cjrh/aiorun/badge.svg?branch=master https://img.shields.io/pypi/pyversions/aiorun.svg https://img.shields.io/github/tag/cjrh/aiorun.svg https://img.shields.io/badge/install-pip%20install%20aiorun-ff69b4.svg https://img.shields.io/pypi/v/aiorun.svg https://img.shields.io/badge/calver-YYYY.MM.MINOR-22bfda.svg

ALPHA

aiorun

Here’s the big idea (how you use it):

import asyncio
from aiorun import run

async def main():
    # Put your application code here
    await asyncio.sleep(1.0)

if __name__ == '__main__':
    run(main())

This package provides a run() function as the starting point of your asyncio-based application.

So what the heck does run() do exactly?? It:

  • creates a Task for the given coroutine (schedules it on the event loop),

  • calls loop.run_forever(),

  • adds default (and smart) signal handlers for both SIGINT and SIGTERM that will stop the loop, and then it…

  • gathers all outstanding tasks,

  • cancels them using task.cancel() (you can choose whether or not to handle CancelledError in your coroutines),

  • waits for the executor to complete shutdown, and

  • finally closes the loop.

All of this stuff is boilerplate that you will never have to write again. So, if you use aiorun this is what you need to remember:

  • Spawn all your work from a single, starting coroutine

  • When a shutdown signal is received, all currently-pending tasks will have CancelledError raised internally. It’s up to you whether you want to handle this in a try/except or not.

  • Try to have executor jobs be shortish, since shutdown will wait for them to finish. If you need a long-running thread or process tasks, use a dedicated thread/subprocess and set daemon=True instead.

There’s not much else to know.

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

aiorun-2017.10.2.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

aiorun-2017.10.2-py2.py3-none-any.whl (15.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file aiorun-2017.10.2.tar.gz.

File metadata

  • Download URL: aiorun-2017.10.2.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aiorun-2017.10.2.tar.gz
Algorithm Hash digest
SHA256 7f7cb189aa9d279974b8501e78f84fb7281e12201f5e419269c7594039b0c8c1
MD5 513bbce8cc9de87f146193a345e6a2e2
BLAKE2b-256 d37def30df9a0d34e2b1639d83df1b08de2d74a5e7fb3131fffaf01c7c2ac1da

See more details on using hashes here.

File details

Details for the file aiorun-2017.10.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for aiorun-2017.10.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c7e572d7064cd2c82a9e71b86922429b191058cced71ca0fde2248e1066a7fe1
MD5 e8f26108f11abcbee68fb83c580f18b3
BLAKE2b-256 14f2af1e52afdc68b0abf7d36096a5a645ba8af7b57edb6d5de6a6024c9f19bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page