Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
Azure Service Bus SDK for Python在向主题发送消息时导致读取超时_Python_Azure_Azureservicebus - Fatal编程技术网

Azure Service Bus SDK for Python在向主题发送消息时导致读取超时

Azure Service Bus SDK for Python在向主题发送消息时导致读取超时,python,azure,azureservicebus,Python,Azure,Azureservicebus,在我的应用程序中,我根据本地事件向主题发送消息。在我遇到网络问题之前,这一切都很好 在网络方面,我的设备通过一个接入点,该接入点提供到internet的主/辅助连接。主要连接是通过ADSL线路,但如果ADSL线路出现故障,它将切换到LTE网络。当切换发生时,我的设备的IP地址保持不变(在本地网络上,通过DHCP分配) 当切换发生时,我发现send命令有一个错误。我获取本地事件并尝试向服务总线发送消息。第一次发送会导致“ReadTimeout”,但后续发送也可以。然后,我获取另一个本地事件并尝试另

在我的应用程序中,我根据本地事件向主题发送消息。在我遇到网络问题之前,这一切都很好

在网络方面,我的设备通过一个接入点,该接入点提供到internet的主/辅助连接。主要连接是通过ADSL线路,但如果ADSL线路出现故障,它将切换到LTE网络。当切换发生时,我的设备的IP地址保持不变(在本地网络上,通过DHCP分配)

当切换发生时,我发现send命令有一个错误。我获取本地事件并尝试向服务总线发送消息。第一次发送会导致“ReadTimeout”,但后续发送也可以。然后,我获取另一个本地事件并尝试另一次发送,该过程会自动重复。如果我重新启动设备,那么一切正常

以下是堆栈跟踪:

文件“/usr/sbin/srvc/sb.py”,第420行,读取超时: HTTPSConnectionPool(主机='**.servicebus.windows.net',端口=443): 读取超时。(读取超时=65)回溯(最近一次呼叫最后一次):
文件“/usr/sbin/srvc/sb.py”,第420行,在 peek_lock=False,timeout=sb_timeout)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservic e、 py”,接收订阅消息中的第976行 超时)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservic e、 py”,第762行,在“读取”“删除”“订阅”消息中 response=self.\u执行请求(请求)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservic e、 py”,第1109行,在执行请求中 resp=self.\u筛选器(请求)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus//u http/httpclient .py“,执行请求中的第181行 self.send\u request\u body(connection,request.body)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus//u http/httpclient .py”,发送请求正文第145行 connection.send(None)文件“/usr/local/lib/python2.7/dist-packages/azure/servicebus//u http/requestscl “ient.py”,发送中第81行 self.response=self.session.request(self.method,self.uri,data=request\u bod y,headers=self.headers,timeout=self.timeout)文件 “/usr/lib/python2.7/dist-packages/requests/sessions.py”,中第457行 要求 resp=self.send(prep,**send_-kwargs)文件“/usr/lib/python2.7/dist-packages/requests/sessions.py”,第569行,在 森德 r=adapter.send(request,**kwargs)文件“/usr/lib/python2.7/dist-packages/requests/adapters.py”,第422行,在 森德 raise ReadTimeout(e,request=request)ReadTimeout:HTTPSConnectionPool(主机='**.servicebus.windows.net',端口=443): 读取超时。(读取超时=65)


根据我的经验,我认为这是嵌入式应用程序的程序流问题

您可以尝试添加一个测试函数,即ping服务总线主机的时间间隔为几秒钟,直到网络正常运行,以返回一个布尔值,以便在设备切换网络适配器后启动新连接。同时,计算ping直到指定值以调用shell命令,如
服务网络重启
ifconfig down和&ifconfig up
,以重启相关网络适配器

这只是一个想法。你能提供一些代码来提供更有用的帮助吗