website/content/blog/asynccallbacks.md

24 lines
843 B
Markdown

---
title: "Quick Python: Async Callbacks"
date: 2020-07-11T20:23:29-04:00
draft: false
tags: ["Python"]
---
I've written a post on using [callbacks in Python](https://brandonrozek.com/blog/pysubscribepattern/). Though to add callbacks to `asyncio` functions, you'll have to interact with the loop object directly. Replace the emit function in the previous post with the following:
```python
class Application:
# ...
def emit(self, message):
for callback in self.callbacks:
if asyncio.iscoroutine(callback):
loop = asyncio.get_running_loop()
loop.call_soon(
functools.partial(
asyncio.ensure_future,
callback(message)
)
)
else:
callback(message)
```