Мне сказали, что вы не должны многопоточными http-запросами, и что вы не должны использовать пакет requests
с asyncio (который является асинхронным фреймворком для python), поэтому я бы порекомендовал использовать следующие пакеты для достиженияэто: asyncio
, aiohttp
, aiohttp_socks
пример кода:
import asyncio
import aiohttp
from aiohttp_socks import SocksConnector
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main(urls):
tasks = []
connector = SocksConnector('socks5://localhost:9050')
async with aiohttp.ClientSession(connector=connector, rdns=True) as session:
for url in urls:
tasks.append(fetch(session, url))
htmls = await asyncio.gather(*tasks)
for html in htmls:
print(html)
if __name__ == '__main__':
urls = [
'http://python.org',
'https://google.com',
...
]
loop = asyncio.get_event_loop()
loop.run_until_complete(main(urls))
Использование asyncio поначалу может быть немного сложным, поэтому вам может потребоваться некоторое время попрактиковатьсяпрежде чем вы освоите его.
Если вы хотите более подробно объяснить разницу между синхронным и асинхронным, ознакомьтесь с этим вопросом.