Skip to main content

No project description provided

Project description

aioerl

PyPI version

aioerl is a python library that mimics the philosophy of Erlang's processes with asyncio tasks.

Implements the following ideas:

  • Each process has a mailbox: a queue to receive messages from other processes.
  • Message passing: processes communicate entirely with messages (from the point of view of the developer)
  • Supervisor/monitors: processes can monitor other processes (when a process dies or crashes, sends a message to its supervisor with the exit reason or the exception)

Why?

asyncio is awesome and built-in structures like asyncio.Queue are great for communicating between tasks but is hard to manage errors.

With aioerl, a process just waits for incoming messages from other processes and decides what to do for each event (see example).

Quickstart

Requirements: Python 3.7+

Installation:

pip install aioerl

Example

from aioerl import spawn_monitored, receive, reply, send, run

async def ping_pong():
    while True:
        m = await receive(timeout=10)
        if m.is_ok:
            if m.body == "ping":
                await reply("pong")
            else:
                raise Exception("Invalid message body")
        elif m.is_timeout:
            return  # terminate process


async def main():
    p = await spawn_monitored(ping_pong())

    await send(p, "ping")
    print(await receive())  # Message(sender=<ErlProc:2>, event='ok', body='pong')

    await send(p, "pang")
    print(await receive())  # Message(sender=<ErlProc:2>, event='err', body=Exception("Invalid message body"))

    await send(p, "ping")
    print(await receive())  # Message(sender=<ErlProc:2>, event='exit', body='noproc')


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

TODO:

Lot of things!

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

aioerl-0.0.20190425.2.tar.gz (16.7 kB view details)

Uploaded Source

File details

Details for the file aioerl-0.0.20190425.2.tar.gz.

File metadata

  • Download URL: aioerl-0.0.20190425.2.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for aioerl-0.0.20190425.2.tar.gz
Algorithm Hash digest
SHA256 a1f3f1f3e058d289ad8a4b04d9b17be87885a0862dc63b470e867b78c054e00b
MD5 6b6ec016dec4c2e9fc7bd5c272314546
BLAKE2b-256 2d8d9c77f7a62bf545e4d7b69f77466ff8ddb0c0eb25f37127d49422f05b8db3

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