Dunaevlad
@Dunaevlad

Как создать разные сессии/ прокси для каждого запроса?

def each_req(url, workers):
        sess = cycle(
            [
                "ASP_NET_SessionId=esofh14jmehe1cthhsjzfijf",
                "ASP_NET_SessionId=dgfhjmehe1casdfhsjzfissz",
            ]
        )

        for _ in range(workers):
            return url, next(sess)

    tasks = [
        "reqOne",
        "reqTwo",
    ]
    with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
        future_to_url = {executor.submit(each_req, url, 1): url for url in tasks}
        for future in concurrent.futures.as_completed(future_to_url):
            print(future.result())
# > ('reqOne', 'ASP_NET_SessionId=esofh14jmehe1cthhsjzfijf'), 
# ('reqTwo',ASP_NET_SessionId=esofh14jmehe1cthhsjzfijf')


Задача в том, что бы для каждого запроса была своя сессия, сейчас же для каждого запроса, выдаёт одну сессию.

P.S. Надо разбивать нагрузку по сессиям, т.е. при 2 запросах и 2 сессиях, каждая сессия используется 1 раз, тогда при 10 запросах и 5 сессиях, каждая сессия используется по 2 раза.
Таким образом снижается нагрузка, т.е. одна сессия(прокси) используется не 10 раз, а меньшее кол-во. Этакая имплементация алгоритма Round Robin.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
list(zip(sess, tasks)) должно сгенерить список пар "сессия, задача". Дальше уже с каждой парой работаешь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы