【发布时间】:2020-02-26 10:30:57
【问题描述】:
我有一些具有这种结构的代码:
def my_callback():
loop = asyncio.get_event_loop()
return loop.run_until_complete(my_coroutine_2())
async def my_coroutine_2():
return await my_stuff.some_future
async def my_coroutine():
not_my_code.library_function(my_callback)
在library_function 调用的my_callback 内部,我需要访问和运行协程代码。
但是,run_until_complete 会产生错误:Event loop already running!。
是否有可能完成上面的描述?
也就是说,是否有一个普通的函数调用会导致事件循环暂停当前正在执行的任何协程(即loop.run_until_complete()的调用者),并继续执行其他协程(包括传递给@987654327的那个) @) 直到请求的协程完成,在这种情况下普通函数解除阻塞?
我认为线程可能会有所帮助,但据我了解,所有协程都必须属于同一个线程。
我该怎么做?有可能吗?
【问题讨论】:
标签: python-3.x asynchronous concurrency python-asyncio coroutine