Бекконект прокси, время ожидания ответа

3frenky3

Новичок
Пользователь
Июл 14, 2023
3
0
1
Добрый день. Проблема не очень сложная но найти решение не могу.

Python:
def main_request(data, proxy='', type_of_proxy='socks5', user_agent='Mozilla/5.0 (Linux; arm; Android 13; PEPM00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.141 YaBrowser/22.3.6.61.00 SA/3 Mobile Safari/537.36'):
 
class TimeoutHTTPAdapter(HTTPAdapter):
    def __init__(self, *args, **kwargs):
        if "timeout" in kwargs:
            self.timeout = kwargs["timeout"]
            del kwargs["timeout"]
        super().__init__(*args, **kwargs)

    def send(self, request, **kwargs):
        timeout = kwargs.get("timeout")
        if timeout is None and hasattr(self, 'timeout'):
            kwargs["timeout"] = self.timeout
        return super().send(request, **kwargs)

s = requests.Session()
 
 
s.mount('http://', TimeoutHTTPAdapter(timeout=5))  # 5 seconds
s.mount('https://', TimeoutHTTPAdapter(timeout=5))
 
retry = Retry(connect=3, backoff_factor=0.7)
adapter = HTTPAdapter(max_retries=retry)
s.mount('http://', adapter)
s.mount('https://', adapter)
 
if type_of_proxy == 'socks5':
    timeout_request = 3
elif type_of_proxy == 'http':
    timeout_request = 1
 
proxies = {
                'http': f'{type_of_proxy}://{proxy}',
                'https': f'{type_of_proxy}://{proxy}'
            }
 
page_login = s.post('https://my-site.com', data=data_1.encode('utf-8'), verify=False,
                                proxies=proxies, headers=headers_dic,timeout=timeout_request)
 
print(main_request(data='1',proxy='login:pass@backconnect.proxy.com:16000',type_of_proxy='http'))

Проблема заключается в том, что когда идет запрос я жду ответ от 10 до 120 секунд. Иногда приходит в первые 3 секунды.
Как мне поставить ограничитель на ожидание ответа? Я уже все перепробовал.

С socks5 все работает как надо.

После 5 минут вот такая ошибка :
ProxyError(MaxRetryError("HTTPSConnectionPool(host='https://my-site.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', timeout('timed out')))"))]
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Вы обманываете. с такими отступами не будет ничего работать...(n)
 

3frenky3

Новичок
Пользователь
Июл 14, 2023
3
0
1
ахахха, а вы не разберетесь где отступы ставить? Форум по программированию это или форум домохозяек?)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
ахахха, а вы не разберетесь где отступы ставить? Форум по программированию это или форум домохозяек?)
форум для всех, могут зайти и домохозяйки...
если у вас где то не верный отступ, то в остальных ваших отступах возникают вопросы, может у вас все в классе написано?
 
-3

3frenky3

Новичок
Пользователь
Июл 14, 2023
3
0
1
Проблема решена! Вот работающий код:

Код:
def main_request(data, proxy='', type_of_proxy='socks5', user_agent='Mozilla/5.0 (Linux; arm; Android 13; PEPM00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.141 YaBrowser/22.3.6.61.00 SA/3 Mobile Safari/537.36'):
  
class TimeoutHTTPAdapter(HTTPAdapter):
    def __init__(self, *args, **kwargs):
        if "timeout" in kwargs:
            self.timeout = kwargs["timeout"]
            del kwargs["timeout"]
        super().__init__(*args, **kwargs)
  
    def send(self, request, **kwargs):
        timeout = kwargs.get("timeout")
        if timeout is None and hasattr(self, 'timeout'):
            kwargs["timeout"] = self.timeout
        return super().send(request, **kwargs)
   
s = requests.Session()
   
 s.mount('http://', TimeoutHTTPAdapter(timeout=5))  # 5 seconds
s.mount('https://', TimeoutHTTPAdapter(timeout=5))
   
   
proxies = {
                'http': f'{type_of_proxy}://{proxy}',
                'https': f'{type_of_proxy}://{proxy}'
            }
   
page_login = s.post('https://my-site.com', data=data_1.encode('utf-8'), verify=False,
                                proxies=proxies, headers=headers_dic,timeout=timeout_request)
   
print(main_request(data='1',proxy='login:pass@backconnect.proxy.com:16000',type_of_proxy='http'))
 
  • Злой!
Реакции: 4olshoy_blen

Форум IT Специалистов