Python: request.exceptions.ConnectionError: HTTPConnectionPool (), максимальное количество повторов превышено с помощью URL - PullRequest
0 голосов
/ 08 ноября 2019

Я использую модуль запросов Python3 для доступа к API моей компании. После нескольких тысяч запросов (мне нужно миллион с запросов) возникла проблема:

Traceback (most recent call last):
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connection.py", line 141, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\util\connection.py", line 83, in create_connection
    raise err
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\util\connection.py", line 73, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] xxxxxx.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 357, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Users\xxxxxx\Anaconda3\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\xxxxxx\Anaconda3\lib\http\client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\xxxxxx\Anaconda3\lib\http\client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\xxxxxx\Anaconda3\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Users\xxxxxx\Anaconda3\lib\http\client.py", line 964, in send
    self.connect()
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connection.py", line 166, in connect
    conn = self._new_conn()
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connection.py", line 150, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x00000252463B7588>: Failed to establish a new connection: [WinError 10060] xxxxxx
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\adapters.py", line 440, in send
    timeout=timeout
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\urllib3\util\retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='uf-api6.ksord.com', port=80): Max retries exceeded with url: /xxxxxx/get/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000252463B7588>: Failed to establish a new connection: [WinError 10060] xxxxxx',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "D:/pyworkspace/pycharm/eb/analysis.py", line 141, in <module>
    local_req()
  File "D:/pyworkspace/pycharm/eb/analysis.py", line 97, in local_req
    res_api = request_pika(hdid, label)
  File "D:\pyworkspace\pycharm\eb\es_and_pika_utils.py", line 21, in request_pika
    res = requests.post(url, json=data, headers={"Content-Type": "application/json", 'Connection': 'close'})
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\api.py", line 112, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\xxxxxx\Anaconda3\lib\site-packages\requests\adapters.py", line 508, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='api.xxxxxx.com', port=80): Max retries exceeded with url: /v2/feature/get/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000252463B7588>: Failed to establish a new connection: [WinError 10060] xxxxxx',))

Вот мой код:

res = requests.post(url, json=data, headers={"Content-Type": "application/json", 'Connection': 'close'})
res.connection.close()
res.close()

1, В приведенном выше коде я закрыл каждыйсоединение и не позволяйте ему оставаться в живых. 2, и я должен настроить TcpTimedWaitDelay в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters до 10. 3, мне не нужен прокси, потому что API не забанить тот же IP. 4.Мой компьютер имеет достаточно памяти. Как это решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...