Skip to main content

Tiny helper for running your async code

Project description

😈 What the heck?

aioGo is the tiny helper library that doing two simple thinks:

  • run your async code

and

  • correct terminate your async code

Default python asyncio have troubles with this: when you hit Ctrl+C asyncio just cancel all your coroutines.

This can lead to many race conditions and hanging your application at exit point.

📘 How to use?

Install from pypi:

pip install aiogo

or, if you prefer poetry:

poetry add aiogo

And just:

from asyncio import Future
from aiogo import go

async def main(termination: Future[bool]) -> None:
    await termination

if __name__ == "__main__":
    go(main)

That's all. You just wait while termination future was resolved (when your application got SIGINT or SIGTERM).

When you will be use this library in real world, just:

import asyncio

async def main(termination: asyncio.Future[bool]) -> None:
    done, _ = asyncio.wait((termination, your_awesome_read_task), return_when=asyncio.FIRST_COMPLETED)

and check done set.

I want custom event loop (uvloop)!

That I have! Again, just:

import uvloop
from aiogo import go

go(main, event_loop_factory=uvloop.new_event_loop)

I want forced exit!

If you can't write correct exit behaviour, well... Do that:

from aiogo import go
go(main, exit_timeout=10)

And all your coroutines will be got CancelledError, as doing old good asyncio.run.

🌎 Hot to contribute?

  • Make a repository fork
  • Apply your changes (don't forget install pre-commit before making commit)
  • Make a pull request

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

aiogo-0.1.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiogo-0.1.1-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file aiogo-0.1.1.tar.gz.

File metadata

  • Download URL: aiogo-0.1.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/10

File hashes

Hashes for aiogo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 18ddb8f30e5772eac294880ae3b4d846627b41775afabf20796f1c8640cbd4b2
MD5 d5313693435ee3f1938e7a7966cd70c8
BLAKE2b-256 4d0cc1db21ce95a9f98e49d0a407f97f283981a4de0c77b0deb1ea05f8b51df5

See more details on using hashes here.

File details

Details for the file aiogo-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: aiogo-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/10

File hashes

Hashes for aiogo-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 99f6eb1ae8c972d84e5f109c8cead24c8f3742139e211b7aac2742d529dddba8
MD5 871755cce83379cca248d6746967e241
BLAKE2b-256 de123cf47b5820394830cd6c4519131d128c266501151d4056c164c79564b104

See more details on using hashes here.

Supported by

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