关于线程和关于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