플라스크에서 aiohttp로 이동 중이며 비동기를 지원하지 않는 Oracle 데이터베이스에서 일부 쿼리를 실행해야합니다. 그래서 어떻게 그 일을 할 수 있는지 궁금하네요?비동기를 지원하지 않는 라이브러리로 작업하는 방법은 무엇입니까?
어때요?
또는 그렇게 다른 (오른쪽) 방법이?
미리 감사드립니다.
플라스크에서 aiohttp로 이동 중이며 비동기를 지원하지 않는 Oracle 데이터베이스에서 일부 쿼리를 실행해야합니다. 그래서 어떻게 그 일을 할 수 있는지 궁금하네요?비동기를 지원하지 않는 라이브러리로 작업하는 방법은 무엇입니까?
어때요?
또는 그렇게 다른 (오른쪽) 방법이?
미리 감사드립니다.
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
앱 루프를 사용해야하며 새 앱을 만들지 않으시겠습니까? 그리고 executor로 None을 전달하면 소스 코드를 읽었습니다. 5 명의 작업자와 함께 나를 위해 threadpoolexecuter를 생성합니다! –
모든 것이 비동기 할 필요가있다. asyncio없이 라이브러리를 사용할 수 있습니다. – dirn
내 응용 프로그램이 다른 클라이언트에 대해 차단 될 수 있기 때문에 비동기식으로 처리해야합니다. –