Как правильно использовать 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
и запущу код, я получу ошибку, указывающую, что у меня недостаточно открытых соединений. Однако я не хочу без необходимости открывать большое количество подключений, если мне это не нужно.
Celery worker -l info -n apple --concurrency=100 --pool=eventlet
- person CENTURION   schedule 19.03.2019