定义 Azure IoT 中心客户端使用的代理 (Python)

Defining a Proxy used by the Azure IoT Hub Client (Python)

我正在为 Python 使用 Azure IoT 中心客户端 SDK。我正在使用 github 存储库中示例脚本的略微修改版本将文件上传到 IoT 中心。只要我不必为传出连接使用代理,一切都可以正常工作。

我试图了解如何为此配置代理,但我没有找到 Python SDK 的任何内容。我还在其他 SDK 中进行了搜索,并在 C SDK 的 iothub_client_options.h 中找到了一些 ProxySettings。但我不知道如何在 python 客户端中设置这些设置(以防这些设置实际有效)。 我还发现 issue 通过 websockets 的连接需要一些特殊格式的 Linux 环境变量。但是我不使用websockets。

我尝试在 Windows 和 Linux 环境中 运行 我的脚本,其中代理系统设置已正确配置(Win:Internet 设置,Linux:环境变量)。

是否有关于此主题的文档?有人知道如何在 windows 或 linux 上配置代理吗?

根据我的经验,如果 OS 配置正确,我认为您可以 运行 python 使用 Azure IoTHub Client SDK 的脚本,无需任何代理设置即可与 Azure IoT Hub 通信代理。

但是在代理服务器中配置不同的协议(如HTTPSocks等)需要注意一些注意事项,如下。

  1. 通常情况下,代理服务器被配置为在 HTTP 协议上工作,该协议只允许 HTTP 通信。因此,如果在 HTTP 模式下使用 IoTHub 客户端,脚本将正常运行,但在 AMQP/MQTT 模式下无法运行。

  2. 如果代理服务器配置为在Socks协议上工作,例如Socks4/Socks5,任何模式下的脚本都可以正常工作,因为Socks协议只传输数据报,不检查协议类型。

因此请检查您的代理服务器支持哪些协议,然后使用 HTTP 模式或为代理配置 Socks 协议以使脚本正常运行。