我使用aiohttp来构建一个API服务器,它将TCP请求发送到一个单独的服务器.发送TCP请求的模块是同步的,对于我来说是一个黑盒.所以我的问题是这些请求阻塞了整个API.我需要一种方法,将模块请求封装在一个异步协同路由中,这样就不会阻塞API的其余部分.
那么,仅以sleep
为简单示例,是否有任何方法可以以某种方式将耗时的同步代码包装到非阻塞协同路由中,比如:
async def sleep_async(delay):
# After calling sleep, loop should be released until sleep is done
yield sleep(delay)
return 'I slept asynchronously'