You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Paho MQTT loop()与loop_forever()异常问题求助

Paho MQTT客户端循环监听失败,触发struct.unpack错误

问题详情

使用Paho MQTT客户端时,尝试通过loop_forever()、loop(time)、loop_start()+loop_stop()等方法持续监听MQTT消息,但循环无法正常启动,始终触发struct.error: unpack requires a string argument of length 2错误。

错误回溯

Traceback (most recent call last):
  File "mosquitto_actuator.py", line 41, in <module>
    mqttc.loop_forever()
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 1756, in loop_forever
    rc = self._loop(timeout)
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 1164, in _loop
    rc = self.loop_read()
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 1556, in loop_read
    rc = self._packet_read()
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 2439, in _packet_read
    rc = self._packet_handle()
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 3039, in _packet_handle
    return self._handle_connack()
  File "/usr/lib/python2.7/site-packages/paho_mqtt-1.6.1-py2.7.egg/paho/mqtt/client.py", line 3087, in _handle_connack
    (flags, result) = struct.unpack("!BB", self._in_packet['packet'])
struct.error: unpack requires a string argument of length 2

客户端代码

# Import package
import paho.mqtt.client as mqtt

# Define Variables
MQTT_HOST = "192.168.0.105"
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = "Pose"

# Define on connect event function
# We shall subscribe to our Topic in this function
def on_connect(mosq, obj, rc, properties=None):
    mqttc.subscribe(MQTT_TOPIC, 0)

# Define on_message event function.
# This function will be invoked every time,
# a new message arrives for the subscribed topic
def on_message(mosq, obj, msg, properties=None):
    print(str(msg.payload))

def on_subscribe(mosq, obj, mid, properties=None):
    print("Subscribed to topic: " + MQTT_TOPIC)

# Initiate MQTT Client
mqttc = mqtt.Client()

# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

# Connect with MQTT Broker
mqttc.connect(MQTT_HOST, MQTT_PORT)

# Continue monitoring the incoming messages for subscribed topic
mqttc.loop_forever()

Mosquitto Broker配置

autosave_interval 1800
connection_messages true
log_timestamp true
allow_anonymous true
socket_domain ipv4

listener 1883

已尝试的排查动作

  • 添加/移除socket_domain ipv4配置项,问题未解决
  • 更换多种循环监听方法,均触发相同错误

恳请帮忙排查问题原因及解决办法。


内容的提问来源于stack exchange,提问作者Sabbly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:31:11