Как использовать асинхронность в библиотеке curl-cffi? python

синхронный код выглядит вот так:

from curl_cffi import requests
import random

with open('urllist.txt', 'r') as urlfile:
    urls = [line.strip() for line in urlfile]

with open('proxies.txt', 'r') as prx_file:
    proxies = [line.strip() for line in prx_file.readlines()]

def get_proxy():
    proxy = random.choice(proxies)
    return {'http': f'http://{proxy}',
            'https': f'http://{proxy}'}


for url in urls:
    r = requests.get(url, impersonate='chrome', proxies=get_proxy())
    print(r.status_code)

увидел, пример асинхронности в документации curl_cffi:

import asyncio
from curl_cffi.requests import AsyncSession

urls = [
    "https://google.com/",
    "https://facebook.com/",
    "https://twitter.com/",
]

async with AsyncSession() as s:
    tasks = []
    for url in urls:
        task = s.get(url)
        tasks.append(task)
    results = await asyncio.gather(*tasks)

не получается написать асинхронный код, какие то непонятные ошибки, и еще не понимаю как использовать прокси в curl_cffi.


Ответы (1 шт):

Автор решения: Сергей Ш
import asyncio
from curl_cffi.requests import AsyncSession

async def main():
    urls = [
        "https://google.com/",
        "https://facebook.com/",
        "https://twitter.com/",
    ]
    async with AsyncSession() as s:
        tasks = (s.get(url) for url in urls)
        results = await asyncio.gather(*tasks)
    print(results)

asyncio.run(main())
→ Ссылка