comparison mqtt_metrics.py @ 3:41e36f98f3b8

die on mqtt connection errors
author drewp@bigasterisk.com
date Fri, 09 Aug 2024 18:36:39 -0700
parents 579df3a4e62d
children cd1b8d7bda78
comparison
equal deleted inserted replaced
2:579df3a4e62d 3:41e36f98f3b8
1 import asyncio 1 import asyncio
2 import json 2 import json
3 import logging 3 import logging
4 import os
4 import re 5 import re
5 import time 6 import time
6 from typing import cast 7 from typing import cast
7 from weakref import WeakSet 8 from weakref import WeakSet
8 9
54 55
55 return message 56 return message
56 57
57 58
58 async def mqttTask(): 59 async def mqttTask():
59 client = aiomqtt.Client('mqtt2.bigasterisk.com', identifier="mqtt-exporter") 60 try:
60 async with client: 61 client = aiomqtt.Client('mqtt2.bigasterisk.com', identifier="mqtt-exporter")
61 await client.subscribe('#') 62 async with client:
62 async for mqttMessage in client.messages: 63 await client.subscribe('#')
63 onMqttMessage(mqttMessage) 64 async for mqttMessage in client.messages:
65 try:
66 onMqttMessage(mqttMessage)
67 except Exception as e:
68 log.warning("mqtt message (topic %r) failed: %r", mqttMessage.topic.value, e)
64 69
70 except Exception:
71 log.error("mqtt task failed", exc_info=True)
72 os.abort()
65 73
66 def onMqttMessage(mqttMessage): 74 def onMqttMessage(mqttMessage):
67 message = simplifyMqttMessage(mqttMessage) 75 message = simplifyMqttMessage(mqttMessage)
68 76
69 metricEvent = tryConverters(message) 77 metricEvent = tryConverters(message)