- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 你好。根据你目前的代码,你的QoS发送循环时间几乎完全由time.sleep(0.1)
调用控制。
该示例使用**publish()**方法,对于QoS 1是阻塞调用。在调用返回之前,它将等待来自AWS IoT Core的PUBACK:https://github.com/aws/aws-iot-device-sdk-python/blob/0b195b82349e2d5b9715d4880da747bfbaaa1437/AWSIoTPythonSDK/core/protocol/mqtt_core.py#L267-L273
相比之下,你可能更喜欢**publishAsync()**方法,它不会阻塞,而是允许你同时进行多个QoS 1事务。请参见此示例:https://github.com/aws/aws-iot-device-sdk-python/blob/master/samples/basicPubSub/basicPubSubAsync.py
如果你尚未这样做,应该使用最近地区的AWS IoT Core端点来最小化往返时间。如果真的要最大化吞吐量,应该完全去掉time.sleep()
。
需要注意的是,IoT Core每个客户端连接每秒最多可发布100次,并且任何时候最多可以同时进行100个传入的QoS 1事务。 https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
最后,我建议你使用V2 SDK而不是V1 SDK:https://github.com/aws/aws-iot-device-sdk-python-v2。来自V1 README:
现在已经推出了新的AWS IoT Device SDK:https://github.com/awslabs/aws-iot-device-sdk-python-v2。这是一个完全重新设计的SDK,旨在提高可靠性、性能和安全性。我们期待你的反馈!
此SDK将不再接收功能更新,但将接收安全更新。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前