В своем приложении я отправляю сообщение в тему на основе локального события. Это работает довольно хорошо, пока я не столкнусь с проблемой сети.
Что касается сети, мое устройство проходит через точку доступа, которая обеспечивает первичное / вторичное подключение к Интернету. Первичное соединение осуществляется через линию ADSL, но если это не удается, оно переключается на сеть LTE. Когда происходит переключение, IP-адрес моего устройства остается неизменным (поскольку он находится в локальной сети и назначается через DHCP).
Когда происходит это переключение, я обнаруживаю, что есть ошибка с командой отправки. Я получаю свое местное событие и пытаюсь отправить сообщение на служебную шину. Первая отправка приводит к «ReadTimeout», но последующая отправка - это нормально. Затем я получаю другое локальное событие и пробую еще одну отправку, и процесс повторяется. Если я перезагружаю устройство, все работает нормально.
Вот трассировка стека:
Файл "/usr/sbin/srvc/sb.py", строка 420, в ReadTimeout: HTTPSConnectionPool (host = '****. Servicebus.windows.net', port = 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, в тайм-ауте receive_subscription_message) Файл" /usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservic e .py ", строка 762, в read_delete_subscription_message response = self._perform_request (request) File" /usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservic e.py ", строка 1109, в _perform_request resp = self._filter (запрос) Файл "/usr/local/lib/python2.7/dist-packages/azure/servicebus/_http/httpclient .py", строка 181, в perform_request self.send_request_body (соединение, request.body) Файл "/usr/local/lib/python2.7/dist-packages/azure/servicebus/_http/httpclient .py", строка 145, в send_request_body connection.send (None) Файл "/ usr / local / lib / python2. 7 / dist-пакеты / azure / servicebus / _http / requestscl ient.py ", строка 81, в send self.response = self.session.request (self.method, self.uri, data = request_bod y, headers = self.headers, timeout = self. таймаут) Файл "/usr/lib/python2.7/dist-packages/requests/sessions.py", строка 457, в req uest resp = self.send (prepare, ** send_kwargs) File "/ usr / lib / python2 .7 / dist-packages / requests / sessions.py ", строка 569, в файле sen dr = adapter.send (request, ** kwargs)" /usr/lib/python2.7/dist-packages/requests/adapters. py ", строка 422, в отправленном повышении ReadTimeout (e, request = request) ReadTimeout: HTTPSConnectionPool (host = '****. servicebus.windows.net', port = 443): Истекло время чтения. (время ожидания чтения = 65)