Blog

Brandon Rozek

Photo of Brandon Rozek

Software Developer, Researcher, and Linux Enthusiast.

Quick Python: Async Callbacks

Published on

Updated on

I’ve written a post on using callbacks in Python. 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:

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)
Reply via Email

Have you published a response to this? :