如何使用不支持异步的库?

时间:2016-07-22 23:41:42

标签: python-3.x async-await python-asyncio cx-oracle aiohttp

我正在从flask转到aiohttp,我需要在Oracle db中执行一些查询,这些查询不支持异步。所以我想知道如何在aiohttp中做到这一点?

这个怎么样?

http://pastebin.com/nbWABbvK

还有其他(右)方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:4)

loop.run_in_executor协程就是这样做的:

result = await loop.run_in_executor(executor, sync_fn, *args)

使用您的示例:

executor = ThreadPoolExecutor(max_workers=1)

async def hello(request):
    param1, param2 = get_params(request)
    result = await app.loop.run_in_executor(executor, sync_fn, param1, param2)
    return web.Response(text=result)