Python: асинхронное программирование и pool_maxsize с HTTPAdapter

Как правильно использовать HTTPAdapter с асинхронным программированием и вызовом метода? Все эти запросы выполняются в один и тот же домен.

Я занимаюсь асинхронным программированием в Celery, используя eventlet и тестируя нагрузку на одном из моих сайтов. У меня есть метод, который я вызываю, который делает запрос к URL-адресу.

def get_session(url): # получает сессию, возвращает исходные заголовки, прокси = header_proxy() # устанавливаем для всех наших необходимых переменных значение None, чтобы в случае ошибки # мы могли быть уверены, что не сломаем response = None status_code = None out_data = Нет содержимого = Нет

try:
    # we are going to use request-html to be able to parse the
    # data upon the initial request

    with HTMLSession() as session:
        # you can swap out the original request session here
        # session = requests.session()
        # passing the parameters to the session
        session.mount('https://', HTTPAdapter(max_retries=0, pool_connections=250, pool_maxsize=500))
        response = session.get(url, headers=headers, proxies=proxies)
        status_code = response.status_code
        try:
            # we are checking to see if we are getting a 403 error on all requests. If so,
            # we update the status code
            code = response.html.xpath('''//*[@id="accessDenied"]/p[1]/b/text()''')
            if code:
                status_code = str(code[0][:-1])
            else:
                pass
        except Exception as error:
            pass
            # print(error)
        # assign the content to content
        content = response.content
except Exception as error:
    print(error)
    pass

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


person CENTURION    schedule 18.03.2019    source источник
comment
Как это связано с сельдереем?   -  person Tomáš Linhart    schedule 18.03.2019
comment
асинхронное выполнение в сельдерее с помощью eventlet. Celery worker -l info -n apple --concurrency=100 --pool=eventlet   -  person CENTURION    schedule 19.03.2019
comment
обновлено, чтобы указать, как я использую сельдерей, спасибо!   -  person CENTURION    schedule 19.03.2019


Ответы (1)


на основе этого... https://laike9m.com/blog/requests-secret-pool_connections-and-pool_maxsize,89/ Я собираюсь предположить, что это относится к хосту, а не к асинхронной задаче. Поэтому я установил максимальное число на максимальное количество соединений, которые можно повторно использовать на хост. Если я попаду в домен несколько раз, соединение будет использовано повторно.

person CENTURION    schedule 18.03.2019