来自另一个线程的Python asyncio回调

时间:2018-11-21 13:44:00

标签: python-asyncio

关于线程和关于stackoverflow的asyncio有很多问题,但是我还没有找到答案。我在asyncio循环以外的另一个线程中有一个回调,由于外部库定义了签名并对其进行调用,所以该回调不能成为协程。我想从该回调中调用协程,但是我不想等待或阻止该调用完成,因为那样会占用外部库。简而言之,如何从另一个线程安排协程,以使其尽快运行。一些测试代码,如果删除了对f.result()的调用,则未计划on_message,或者我们抱怨未等待它。

    def _on_message(self, consumer, message):
        f = asyncio.run_coroutine_threadsafe(self.on_message(consumer, message), self.loop)
        # don't want this blocking call to result
        f.result()

    async def on_message(self, consumer, message):
        # do real work
        pass

0 个答案:

没有答案