Когда вам нужно преобразовать метод синхронизации в асинхронное, у вас есть несколько различных опций . Второй (run_in_executor
), вероятно, самый простой.
Например, вот как вы можете сделать функцию синхронизации requests.get
для асинхронного запуска:
import asyncio
import requests
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
async def get(url):
loop = asyncio.get_running_loop()
response = await loop.run_in_executor(
executor,
requests.get,
url
)
return response.text
async def main():
res = await get('http://httpbin.org/get')
print(res)
asyncio.run(main())