保持(python)paho MQTT连接不间断地活动
目前,我正在使用以下函数发布到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
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, )