认输

这几天在调整一个项目的 mqtt 上报的数据时发现一个诡异的问题,那就是同样的服务器,如果使用 mqtt 客户端连上去一切都是正常的,上报频率也确实是看起来跟客户说的一样一分钟 1 条。

然而,在代码里获取的时候就完全变了,有时候看起来一切正常有时候时间就变得异常不稳定。

[*] Time: 2025-05-20 15:09:13
[*] Time interval from last message: 240.51 seconds
[*] Topic: canteen/third/second/valve1
[*] Message: {"switch1":1,"switch2":0,"switch3":0,"switch4":0}
[A] Updated device status: canteen/third/second/valve1_switch1
[W] Device not found: canteen/third/second/valve1_switch3

甚至有时候时间能到十来分钟都没数据。这个就很诡异了。

输出错误日志会发现系统在一直尝试断线重连:

但是在不断重连之后又能间歇性 的收到消息,这就很神奇了。7: “Connection refused – not authorized (no credentials needed)”

在尝试调整 qos 以及优化连接代码之后,依然无果。没有任何的改进,不得已只能放弃原有的链接库paho,转投更先进的gmqtt。

gmqtt: Python async MQTT client implementation.

https://pypi.org/project/gmqtt/

看示例代码也比较简洁:

import asyncio
import os
import signal
import time

from gmqtt import Client as MQTTClient

# gmqtt also compatibility with uvloop  
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())


STOP = asyncio.Event()


def on_connect(client, flags, rc, properties):
    print('Connected')
    client.subscribe('TEST/#', qos=0)


def on_message(client, topic, payload, qos, properties):
    print('RECV MSG:', payload)


def on_disconnect(client, packet, exc=None):
    print('Disconnected')

def on_subscribe(client, mid, qos, properties):
    print('SUBSCRIBED')

def ask_exit(*args):
    STOP.set()

async def main(broker_host, token):
    client = MQTTClient("client-id")

    client.on_connect = on_connect
    client.on_message = on_message
    client.on_disconnect = on_disconnect
    client.on_subscribe = on_subscribe

    client.set_auth_credentials(token, None)
    await client.connect(broker_host)

    client.publish('TEST/TIME', str(time.time()), qos=1)

    await STOP.wait()
    await client.disconnect()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()

    host = 'mqtt.flespi.io'
    token = os.environ.get('FLESPI_TOKEN')

    loop.add_signal_handler(signal.SIGINT, ask_exit)
    loop.add_signal_handler(signal.SIGTERM, ask_exit)

    loop.run_until_complete(main(host, token))

其实,各种方式或者库对我来说没什么特殊的喜好,只要能解决自己的问题就好,作为一个实用主义住,该认输就认输,毕竟要解决这个异常问题可能得从框架本身入手了,这也非我所愿。有这点时间干点别的不好吗?

白天又又又又收到了整改通知,现在看到这种整改通知,的确是有点沮丧,改不完,根本改不完。

不过这次反馈的是功能问题,该修复还是要修复的。不过白天也确实没时间了,晚上还要带宝子去石老人看沙滩音乐会。

下班还是果断先带宝子出去玩啊:

舞台比较小,毕竟是海尔组织的小型活动,所以也没多大的舞台。据说主要目的还是为了今天的集体婚礼,宝子一直在边上的游乐设施玩,等玩够了却发现连舞台边都看不到,什么也看不着,好在无人机表演倒是不需要往前挤。

早上送宝子上学,宝子嚷嚷着要听收音机的 青紫堂的广告,非得听那个念电话号码的 57813377。不得不说,这个广告没白听,我都记住了。

学校外面看到有卖小樱桃的,问了下十三一斤,回家的路上买了点,说要两三节,结果一下子来了四斤多。

到家之后打开袋子发现是上当了,篮子底下的基本都是坏的。也就是说给我装的就没几个好的,连表面一层好的想找也找不出来了。

对象说,你洗洗看看吧,不行就不要了。

那和樱桃放到水盆里,倒上水,挑的时候的确是绝望了,不单软软的,还有很多烂的,挑了几个长了一下,也不好吃。最后放弃了,连袋子一起扔到了垃圾桶里。

这的确是上了老当了,被骗了,只能认输。

☆版权☆

* 网站名称:obaby@mars
* 网址:https://lang.ma/
* 个性:https://oba.by/
* 本文标题: 《认输》
* 本文链接:https://www.danteng.me/2025/05/20784
* 短链接:https://oba.by/?p=20784
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

17 comments

    1. 公主 Queen 
      Google Chrome 134 Google Chrome 134 Mac OS X 10.15 Mac OS X 10.15 cn中国 中国联通

      是因为国内的个人开发者,只有华为还允许上架 app。
      小米 ov 系列都要求企业开发者。

  1.  Level 6
    Microsoft Edge 136 Microsoft Edge 136 Windows 11 Windows 11 cn中国–广东–珠海 电信

    网上有人提过这个库有问题么?python生态可能不那么强,java就比较容易搜到答案

    公司项目嘛,能用就行,而自己项目就要死磕到底,哈

  2. Level 1
    Microsoft Edge 136 Microsoft Edge 136 Mac OS X 10.15 Mac OS X 10.15 jp日本 东京工业大学

    通过贵站提供的RSS链接订阅你的博客动态不知道为什么读取不了内容

        1. 公主 Queen 
          Google Chrome 134 Google Chrome 134 Mac OS X 10.15 Mac OS X 10.15 cn中国 中国联通

          嗯嗯,国外的访问可能需要通过 cdn 的验证,经常被打。
          你试试这个吧https://da.bi/feed 这个没套 cdn。不过有 waf,如果没有异常操作应该不会被拦截。

  3. Level 5
    Google Chrome 131 Google Chrome 131 Windows 10 Windows 10 cn中国–香港 IPXO

    巧了,昨晚老婆买了打折樱桃10元一斤,买了17元的。
    也是坏掉的多,挑了半小时,留了6分之一左右。
    没敢直接洗,担心污染了偶尔那几个好的。
    拼多多看了贵一点15左右一斤

    1. 公主 Queen 
      Google Chrome 134 Google Chrome 134 Android 10 Android 10 cn中国 中国联通

      真是坑了爹了 前几天学校门口买的一个大爷的还不错也是15

  4. Level 6
    Safari 18 Safari 18 Mac OS X 10.15 Mac OS X 10.15 cn中国–安徽–合肥–肥西县 移动

    这代码输出的界面确实很漂亮。
    以前在马路边卖水果的忽悠我给了假钱,以后再也不在路边上买东西了

  5. Level 6
    Google Chrome 109 Google Chrome 109 Windows 10 Windows 10 cn中国–上海–上海 腾讯云

    上周路边买的枇杷13块一斤,还很酸,结果菜市场10块钱3-4斤。
    灵妹妹你们家公主晚上都不做作业吗?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注