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

Paho MQTT on_publish回调报错:'int'对象无'topic'属性

问题原因及解决办法

原因

Paho MQTT的on_publish回调函数参数定义错了。这个回调的标准参数是client, userdata, mid,第三个参数mid是整数类型的消息ID,不是on_message回调里的msg消息对象。你应该是把on_publish的参数写成了和on_message一样的(client, userdata, msg),触发回调时,整数类型的mid被当成msg对象来访问topic属性,自然会抛出'int' object has no attribute 'topic'的异常。

解决办法

  1. 修正on_publish的参数定义,改成标准格式:
    def on_publish(client, userdata, mid):
        # 示例:用mid确认消息发布状态
        print(f"消息ID {mid} 已成功发布")
    
  2. 如果需要在发布成功后获取消息的topic、内容等信息,别指望on_publish的参数——你可以在调用client.publish()时,把topic、payload等信息存到全局变量、类实例属性或者userdata里,之后在on_publish中通过mid关联对应的消息信息(比如维护一个mid到消息详情的字典)。

内容的提问来源于stack exchange,提问作者deputy-chief-hardy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:22:04