Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 由于请求连接尝试次数有限,连接被拒绝_Python_Azure_Request_Azure Iot Hub - Fatal编程技术网

Python 由于请求连接尝试次数有限,连接被拒绝

Python 由于请求连接尝试次数有限,连接被拒绝,python,azure,request,azure-iot-hub,Python,Azure,Request,Azure Iot Hub,我在Azure IoT的边缘上运行了一个脚本,执行一些计算,一旦程序计算出所需的数字,我会将它们发送到两个地方: 返回物联网中心 使用“请求”库发布到本地url 现在问题出现在这里;在运行和罚款数天后,程序停止,日志显示以下问题: Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line 159, in _new_conn

我在Azure IoT的边缘上运行了一个脚本,执行一些计算,一旦程序计算出所需的数字,我会将它们发送到两个地方:

  • 返回物联网中心
  • 使用“请求”库发布到本地url
现在问题出现在这里;在运行和罚款数天后,程序停止,日志显示以下问题:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line 159, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
  File "/usr/local/lib/python3.5/dist-packages/urllib3/util/connection.py", line 80, in create_connection
    raise err
  File "/usr/local/lib/python3.5/dist-packages/urllib3/util/connection.py", line 70, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.5/http/client.py", line 1107, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1152, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.5/http/client.py", line 1103, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
  File "/usr/lib/python3.5/http/client.py", line 877, in send
    self.connect()
  File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line         181, in connect
    conn = self._new_conn()
  File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line     168, in _new_conn
self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection         object at 0x6c05f6f0>: Failed to establish a new connection: [Errno 111]     Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 449, in send
timeout=timeout
    File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
  File "/usr/local/lib/python3.5/dist-packages/urllib3/util/retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.32.61', port=1880): Max retries exceeded with url: /camara (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x6c05f6f0>: Failed to establish a new connection: [Errno 111] Connection refused',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/main.py", line 187, in <module>
    main()
  File "/app/main.py", line 161, in main
cameraCaptureSolver.start()
  File "/app/CameraCaptureSolver.py", line 161, in start
    requests.post('http://192.168.32.61:1880/camara', data = 'camaraName':camara})
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.32.61', port=1880): Max retries exceeded with url: /camara (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x6c05f6f0>: Failed to establish a new connection: [Errno 111] Connection refused',))
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.5/dist-packages/urllib3/connection.py”,第159行,位于康涅狄格州新城区
(self.\u dns\u主机、self.port)、self.timeout、**额外功率)
文件“/usr/local/lib/python3.5/dist packages/urllib3/util/connection.py”,第80行,在create_connection中
提出错误
文件“/usr/local/lib/python3.5/dist packages/urllib3/util/connection.py”,第70行,在create_connection中
sock.connect(sa)
ConnectionRefusedError:[Errno 111]连接被拒绝
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py”,第600行,在urlopen中
分块=分块)
文件“/usr/local/lib/python3.5/dist packages/urllib3/connectionpool.py”,第354行,在请求中
conn.request(方法,url,**httplib\u request\u kw)
请求中的文件“/usr/lib/python3.5/http/client.py”,第1107行
self.\u发送请求(方法、url、正文、标题)
文件“/usr/lib/python3.5/http/client.py”,第1152行,在发送请求中
self.endheaders(主体)
文件“/usr/lib/python3.5/http/client.py”,第1103行,在endheaders中
自发送输出(消息体)
文件“/usr/lib/python3.5/http/client.py”,第934行,在发送输出中
self.send(msg)
文件“/usr/lib/python3.5/http/client.py”,第877行,在send中
self.connect()
文件“/usr/local/lib/python3.5/dist-packages/urllib3/connection.py”,第181行,在connect中
conn=自我。_new_conn()
文件“/usr/local/lib/python3.5/dist-packages/urllib3/connection.py”,第168行,位于康涅狄格州新州
self,“无法建立新连接:%s”%e)
urllib3.exceptions.NewConnectionError::无法建立新连接:[Errno 111]连接被拒绝
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.5/dist-packages/requests/adapters.py”,第449行,在send中
超时=超时
文件“/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py”,第638行,在urlopen中
_stacktrace=sys.exc_info()[2])
文件“/usr/local/lib/python3.5/dist-packages/urllib3/util/retry.py”,第398行,增量
引发MaxRetryError(_池、url、错误或响应错误(原因))
urllib3.exceptions.MaxRetryError:HTTPConnectionPool(host='192.168.32.61',port=1880):url:/camara超过了最大重试次数(由NewConnectionError引起(':未能建立新连接:[Errno 111]连接被拒绝',))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/app/main.py”,第187行,在
main()
文件“/app/main.py”,第161行,在main中
cameraCaptureSolver.start()
文件“/app/CameraCaptureSolver.py”,第161行,开头
请求。邮寄('http://192.168.32.61:1880/camara,数据='camaraName':camara})
文件“/usr/local/lib/python3.5/dist-packages/requests/api.py”,第116行,在post中
返回请求('post',url,data=data,json=json,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/requests/api.py”,请求中的第60行
return session.request(method=method,url=url,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/requests/sessions.py”,请求中的第533行
resp=自我发送(准备,**发送)
文件“/usr/local/lib/python3.5/dist-packages/requests/sessions.py”,第646行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/requests/adapters.py”,第516行,在send中
raise ConnectionError(e,请求=请求)
requests.exceptions.ConnectionError:HTTPConnectionPool(host='192.168.32.61',port=1880):url:/camara超过了最大重试次数(由NewConnectionError引起(':未能建立新连接:[Errno 111]连接被拒绝',))
因此,问题在于请求,但不知道重试次数有限制


关于如何删除或增加该数量,您有什么想法吗?

升级您的AWS订阅应该会增加您可以发送的请求数量。

这不是一个完整的答案,甚至只是一个关于如何进行问题导向的建议

正如您所说的“限制重试次数”,这是一种自动重试机制 默认情况下重试次数为3次,如下面的官方文档所述

urllib3可以自动重试幂等请求。同样的机制也处理重定向。您可以使用retries参数to request()来控制重试。默认情况下,urllib3将重试3次请求,并最多执行3次重定向

您可以使用自定义计数设置重试次数或禁用重试次数,如下代码所示

根据我的经验,对于错误
ConnectionRefusedError
,可能有很多原因,例如:

  • 在不稳定的网络上运行,或在不稳定的代理后工作
  • 某些IoTHub限制或过期的访问令牌导致连接被拒绝问题。对于这种情况,您需要检查状态代码和相关错误信息,以便通过打印
    r.status
    r.data
    查找
    r=http.request(…)
    的原因
  • 您可以参考
    Azure订阅和服务限制、配额和约束的部分,将您的详细信息与这些限制进行比较,下面是和的错误代码,这将帮助您找到真正的原因

    图1。物联网中心的常见错误

    图2。物联网Edg的可能响应
    http.request('GET', 'http://httpbin.org/ip', retries=10) // set 10 for reties
    http.request('GET', 'http://nxdomain.example.com', retries=False) // disable retrying