保持(python)paho MQTT连接不间断地活动

保持(python)paho MQTT连接不间断地活动,python,mqtt,paho,Python,Mqtt,Paho,目前,我正在使用以下函数发布到MQTT代理: import paho.mqtt.client as mqtt import paho.mqtt.publish as publish def publish_to_broker(data): publish.multiple(data, hostname=example_host, port=8883, client_id="example_id", keepalive=60, will=None

目前,我正在使用以下函数发布到MQTT代理:

import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish

def publish_to_broker(data):
    publish.multiple(data, hostname=example_host, port=8883, client_id="example_id", keepalive=60,
                     will=None, auth={'username': "example_user", 'password': "example_password"},
                     tls={'ca_certs': certifi.where(), 'tls_version': ssl.PROTOCOL_TLSv1_2}, 
                     protocol=mqtt.MQTTv311, transport="tcp")
因为这是为每个帖子建立一个新的连接,所以我需要更改它,使连接保持活动状态,并在连接丢失时重新连接

遗憾的是,我发现docu毫无用处,例如
tls=
部分仅与上述方法一起使用,其中mqtt连接在发布后立即关闭。但是,我希望这样做更像:

mqtt_client = mqtt.Client(client_id="example_id", protocol=mqtt.MQTTv311, transport="tcp")

mqtt_client.connect(host=example_host, port=8883, auth={'username': "example_user", 'password': "example_password"},  tls={'ca_certs': certifi.where(), 'tls_version': ssl.PROTOCOL_TLSv1_2})


def publish_to_broker_smart(data):
    mqtt_client.publish(data)
但是,我收到了错误消息:
TypeError:connect()得到了一个意外的关键字参数“auth”


这些规范适用于何处?

必须以不同的方式指定tls和auth。这是一条路:

mqtt_client = mqtt.Client(client_id=example_client, protocol=mqtt.MQTTv311, transport="tcp")
mqtt_client.username_pw_set(username, password)
mqtt_client.tls_set(ca_certs=certifi.where(), tls_version=ssl.PROTOCOL_TLSv1_2)
mqtt_client.connect(host=example_host, port=8883)

def smart_post(data):
    mqtt_client.publish(topic=example_topic, payload=data, )