Определение прокси-сервера, используемого клиентом Azure IoT Hub (Python)

Я использую пакет SDK клиента Azure IoT Hub для Python. Я использую слегка измененную версию примера скрипта из репозитория github для загрузки файлов в Центр Интернета вещей. Все работает нормально, пока мне не приходится использовать прокси для исходящих соединений.

Я пытался понять, как настроить прокси для этого, но ничего не нашел для Python SDK. Я также искал в других пакетах SDK и нашел некоторые параметры ProxySettings в iothub_client_options.h C SDK. Но я не знаю, как установить эти настройки в клиенте python (если настройки действительно работают). Я также обнаружил проблему, что для подключения через веб-сокеты требуется некоторое специальный формат переменных среды Linux. Но я не использую веб-сокеты.

Я пытался запустить свой скрипт как в среде Windows, так и в среде Linux, где параметры прокси-системы настроены правильно (Win: настройки Интернета, Linux: переменные среды).

Есть ли документация по этой теме? Кто-нибудь знает, как настроить прокси на Windows или Linux?


person Marc    schedule 26.01.2017    source источник
comment
Предлагаю и вам написать сюда: github.com/azure/azure-iot-sdk- python, чтобы помочь с ответом   -  person Laurent Mazuel    schedule 27.01.2017


Ответы (1)


Исходя из моего опыта, я думаю, что вы можете запустить скрипт Python с помощью SDK клиента Azure IoTHub без каких-либо настроек прокси-сервера для связи с Azure IoT Hub, если ОС правильно настроила прокси-сервер.

Однако есть некоторые примечания, на которые следует обратить внимание, используя другой протокол (например, HTTP, Socks и т. д.), настроенный на прокси-сервере, как показано ниже.

  1. Обычно прокси-сервер был настроен для работы по протоколу HTTP, который разрешает только связь HTTP. Таким образом, при использовании клиента IoTHub в режиме HTTP скрипт будет работать нормально, но не будет работать в режиме AMQP/MQTT.

  2. Если прокси-сервер настроен на работу по Socks протоколу, например Socks4/Socks5, скрипт в любом режиме будет работать нормально, потому что Socks протокол просто передает дейтаграмму, а не проверяет тип протокола.

Поэтому, пожалуйста, проверьте, какие протоколы поддерживаются вашим прокси-сервером, а затем используйте режим HTTP или настройте протокол Socks для прокси, чтобы скрипт работал.

person Peter Pan    schedule 27.01.2017
comment
Спасибо за ваш ответ! Я могу убедиться, что он работает сейчас, после того как я также настроил прокси-сервер HTTPS (я использую протокол HTTP). Спасибо! - person Marc; 30.01.2017
comment
Теперь у меня проблема, что аутентификация (с использованием HTTPS-прокси) не работает на определенном прокси-сервере (другие работают нормально). Я предполагаю, что заголовок аутентификации HTTP отбрасывается прокси-сервером. Есть ли решение этой проблемы? (это может быть вопрос сам по себе, но, возможно, есть простое решение, которое мне сейчас не хватает). - person Marc; 01.02.2017