【发布时间】:2020-06-29 07:37:34
【问题描述】:
我正在使用 AWS IoT 设备 SDK Python(sudo pip install awsiotsdk && python -m pip install awscrt)建立 IoT 连接 (MQTT)。在我的 Raspbian 设备上使用 WiFi 效果很好。
使用 GSM 模块时,我在 ~5-6 秒后收到以下错误:
'aws.crt.exceptions.AwsCrtError: AwsCrtError(name='AWS_IO_TLS_NEGOTIATION_TIMEOUT', message='Channel shutdown due to tls negotiation timeout', code=1068).
于是我尝试 telnet 看看是否可行,结果成功:
host$> telnet <prefix>.iot.<region>.amazonaws.com 8883
Trying 54.123.456.103...
Connected to <endpoint>.
Escape character is '^]'.
我尝试了openssl,看可以建立连接,成功:
openssl s_client -connect <prefix>.iot.<region>.amazonaws.com:8883 -tls1_2 -CAfile <path to Root CA cert> -cert <Path to device cert> -key <Path to device private key>
我增加了代码和库中的所有超时,例如ping_timout_ms 从 5s -> 30s。 这没有帮助。
keep_alive_secs=kwargs.get('keep_alive_secs', 1200),
ping_timeout_ms=kwargs.get('ping_timeout_ms', 30000)
我不知道我还能做些什么来解决这个问题。搜索时我也找不到任何有用的信息。寻求建议!
添加其他信息,完整运行约 15 秒。我在代码中添加了一些 print() 以更好地了解正在发生的事情。
Import awscrt and awsiot
concurrent/futures/_base.Future
concurrent/futures/_base.Future.Executor
mqtt.Client
mqtt.Connection
main.py - Parameters
main.py - Define global parameters..
main.py - Main started!
awsiot_mqtt_connection_builder.mtls_from_path
awsiot_mqtt_connection_builder._builder
awsiot_mqtt_connection_builder._builder.ca_filepath
ca_dirpath: None ca_filepath: /cert/AmazonRootCA1.pem
awsiot_mqtt_connection_builder._builder.not_use_websocket
awscrt/io.is_alpn_available
awsiot_mqtt_connection_builder._builder.not_use_websocket.alpn_available
Port: 443
awsiot_mqtt_connection_builder._get_metrics_str
mqtt.Client.__init__
mqtt.Connection.__init__
Connecting to xxxxxxxxxx-ats.iot.eu-west-1.amazonaws.com with client ID '<string>'
mqtt.connect started..
<awscrt.mqtt.Connection object at 0xb47c3788>
_base.Future.__init__ started...
concurrent/futures/_base.Future.__repr__
<Future at 0xb4758330 state=pending>
mqtt.connect.try
self.keep_alive_secs: 240 self.ping_timeout_ms: 50000
concurrent/futures/_base.Future.result
mqtt.connect.on_connect started..
Error code
1067
_base.Future.set_exception started...
_base.Future.set_exception_info started...
concurrent/futures/_base.Future.__get_result
concurrent/futures/_base.Future._invoke_callbacks
【问题讨论】:
标签: python amazon-web-services aws-sdk aws-iot