Как ускорить асинхронную отправку запросов?
Вот мой код:
async def send_post(uid, session):
async with session.get(f"https://cite.ru/{uid}") as resp:
print(await resp.json())
async def main():
sort_uid = ['6298b5d2259131164d5bc2d9', '6298b46b785e25431444371b', '6298b2e09778f61cff2256a3',
'6298b2aa9c42436dc36aa8f6', '6298b456cc27fd234f147980', '6298b467ff886d01082592d3']
connector = aiohttp.TCPConnector(force_close=True)
async with aiohttp.ClientSession(connector=connector) as session:
await asyncio.gather(*[send_post(uid, session) for uid in sort_uid])
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Возможно его ускорить какими-то методами?
Ответы (1 шт):
Автор решения: Mikhail S
→ Ссылка
Если бы мне нужно было как можно быстрее отправить какое-то кол-во запросов, я воспользовался бы многопоточностью, например ThreadPoolExecutor из библиотеки concurrent. Например:
from concurrent.futures import ThreadPoolExecutor
import requests
def do_request(url):
requests.get(url)
n = 10 #кол-во потоков
urls_list = ['some_url_1', 'some_url_2', 'some_url_3', <...>]
with ThreadPoolExecutor(n) as executor:
executor.map(do_request, urls_list)
Прочесть подробнее можно здесь https://docs.python.org/3/library/concurrent.futures.html