我正在從瓶子移動到aiohttp,我需要在不支持異步的Oracle數據庫中執行一些查詢。所以我想知道如何在aiohttp中做到這一點?如何使用不支持異步的庫?
這個怎麼樣?
或者有其他(右)的方式來做到這一點?
在此先感謝!
我正在從瓶子移動到aiohttp,我需要在不支持異步的Oracle數據庫中執行一些查詢。所以我想知道如何在aiohttp中做到這一點?如何使用不支持異步的庫?
這個怎麼樣?
或者有其他(右)的方式來做到這一點?
在此先感謝!
的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)
是的,我明白,但你不明白我,我使用aiohttp,更新示例代碼 –
@Howtochangeusername請參閱我的編輯。 – Vincent
我必須使用應用程序循環,而不是創建新的? 我讀過源代碼,如果我將通過None作爲執行者,它將爲我創建5個工作者的threadpoolexecuter! –
並非一切都需要是異步的。您可以像使用asyncio一樣使用庫。 – dirn
我必須以異步的方式做到這一點,因爲我的應用程序會被其他客戶端阻止 –