From 7c87b38a23a50a038e4ad66818e9b51ff745ce86 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 1 Sep 2023 16:41:34 -0400 Subject: [PATCH] Reduce overhead to process and publish MQTT messages (#99457) --- homeassistant/components/mqtt/client.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/mqtt/client.py b/homeassistant/components/mqtt/client.py index 62f1f55401d..733645c4788 100644 --- a/homeassistant/components/mqtt/client.py +++ b/homeassistant/components/mqtt/client.py @@ -110,7 +110,7 @@ def publish( encoding: str | None = DEFAULT_ENCODING, ) -> None: """Publish message to a MQTT topic.""" - hass.add_job(async_publish, hass, topic, payload, qos, retain, encoding) + hass.create_task(async_publish(hass, topic, payload, qos, retain, encoding)) async def async_publish( @@ -376,6 +376,7 @@ class MQTT: ) -> None: """Initialize Home Assistant MQTT client.""" self.hass = hass + self.loop = hass.loop self.config_entry = config_entry self.conf = conf @@ -806,7 +807,7 @@ class MQTT: self, _mqttc: mqtt.Client, _userdata: None, msg: mqtt.MQTTMessage ) -> None: """Message received callback.""" - self.hass.add_job(self._mqtt_handle_message, msg) + self.loop.call_soon_threadsafe(self._mqtt_handle_message, msg) @lru_cache(None) # pylint: disable=method-cache-max-size-none def _matching_subscriptions(self, topic: str) -> list[Subscription]: