This commit is contained in:
Brandon Rozek 2020-07-11 20:46:33 -04:00
parent f8d002207d
commit 37219ffbb6

View file

@ -0,0 +1,23 @@
---
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(event, index)
)
else:
callback(event, index)
```