如this page所述,Eclipse Paho Python客户端为客户端脱机时未发送的消息提供缓冲区,这些消息最终在客户端重新连接到代理时发送。
当大量客户端同时重新连接时,有没有办法禁用此功能以防止服务器泛滥?
答案 0 :(得分:1)
调用reinitialise()
方法将清除已存储的消息。
来自文档here
clean_session
a boolean that determines the client type. If True, the broker will remove all information about this client when it disconnects. If
错误,客户端是持久的客户端和订阅信息 当客户端断开连接时,将保留排队的消息。
请注意,客户端永远不会在断开连接时丢弃自己的外发邮件。调用connect()或reconnect()将导致消息 被重新发送。使用reinitialise()将客户端重置为原始客户端 状态。
重新初始化的文档在这里:
重新初始化()
reinitialise(client_id="", clean_session=True, userdata=None)
reinitialise()函数将客户端重置为其初始状态为 如果它刚刚被创建。它采用与...相同的参数 Client()构造函数。实施例
mqttc.reinitialise()
您可以将其设置为在on_disconnect
回拨中调用。