A project to manage callbacks in asyncio projects.

Signal is a list of registered asynchronous callbacks.

The signal’s life-cycle has two stages: after creation its content could be filled by using standard list operations: sig.append() etc.

After you call sig.freeze() the signal is frozen: adding, removing and dropping callbacks is forbidden.

The only available operation is calling the previously registered callbacks by using await sig.send(data).

For concrete usage examples see the Signals section of the Web Server Advanced chapter of the aiohttp documentation.


class aiosignal.Signal(owner)

The signal, implements the interface. The owner object is shown in the signal representation, and is there to make debugging easier.

async send(*args, **kwargs)

Call all registered callbacks one by one starting from the beginning of the list.


True if freeze() was called, read-only property.


Freeze the list. After calling, any content modification is forbidden.


$ pip install aiosignal

The library requires Python 3.6 or newer.


aiosignal depends on the frozenlist library.


Communication channels

aio-libs discourse group:

Feel free to post your questions and ideas here.

gitter chat


  • Python >= 3.6

  • frozenlist >= 1.0.0


aiosignal is offered under the Apache 2 license.

Source code

The project is hosted on GitHub

Please file an issue in the bug tracker if you have found a bug or have some suggestions to improve the library.

Authors and License

The aiosignal package was originally part of the aiohttp project, written by Nikolay Kim and Andrew Svetlov. It is now being maintained by Martijn Pieters.

It’s Apache 2 licensed and freely available.

Feel free to improve this package and send a pull request to GitHub.

Indices and tables