Bladeren bron

Make MQTT keepalive configurable

Tulir Asokan 2 jaren geleden
bovenliggende
commit
c32b4b333d
4 gewijzigde bestanden met toevoegingen van 8 en 3 verwijderingen
  1. 4 3
      mauigpapi/mqtt/conn.py
  2. 1 0
      mautrix_instagram/config.py
  3. 2 0
      mautrix_instagram/example-config.yaml
  4. 1 0
      mautrix_instagram/user.py

+ 4 - 3
mauigpapi/mqtt/conn.py

@@ -81,7 +81,6 @@ ACTIVITY_INDICATOR_REGEX = re.compile(
 INBOX_THREAD_REGEX = re.compile(r"/direct_v2/inbox/threads/([\w_]+)")
 
 REQUEST_TIMEOUT = 60 * 3
-DEFAULT_KEEPALIVE = 60
 REQUEST_KEEPALIVE = 5
 
 
@@ -112,6 +111,7 @@ class AndroidMQTT:
         state: AndroidState,
         log: TraceLogger | None = None,
         proxy_handler: ProxyHandler | None = None,
+        mqtt_keepalive: int = 60,
     ) -> None:
         self._graphql_subs = set()
         self._skywalker_subs = set()
@@ -144,7 +144,8 @@ class AndroidMQTT:
         # mqtt.max_queued_messages_set(0)  # Unlimited messages can be queued
         # mqtt.message_retry_set(20)  # Retry sending for at least 20 seconds
         # mqtt.reconnect_delay_set(min_delay=1, max_delay=120)
-        self._client.connect_async("edge-mqtt.facebook.com", 443, keepalive=60)
+        self._default_keepalive = mqtt_keepalive
+        self._client.connect_async("edge-mqtt.facebook.com", 443, keepalive=mqtt_keepalive)
         self._client.on_message = self._on_message_handler
         self._client.on_publish = self._on_publish_handler
         self._client.on_connect = self._on_connect_handler
@@ -678,7 +679,7 @@ class AndroidMQTT:
             and not self._publish_waiters
             and not self._message_response_waiter
         ):
-            self._client._keepalive = DEFAULT_KEEPALIVE
+            self._client._keepalive = self._default_keepalive
 
     def publish(self, topic: RealtimeTopic, payload: str | bytes | dict) -> asyncio.Future:
         if isinstance(payload, dict):

+ 1 - 0
mautrix_instagram/config.py

@@ -45,6 +45,7 @@ class Config(BaseBridgeConfig):
         copy("instagram.device_seed")
         if base["instagram.device_seed"] == "generate":
             base["instagram.device_seed"] = self._new_token()
+        copy("instagram.mqtt_keepalive")
 
         copy("bridge.username_template")
         copy("bridge.displayname_template")

+ 2 - 0
mautrix_instagram/example-config.yaml

@@ -92,6 +92,8 @@ instagram:
     # logging out, because Instagram is insecure.
     device_seed: generate
 
+    mqtt_keepalive: 60
+
 # Bridge config
 bridge:
     # Localpart template of MXIDs for Instagram users.

+ 1 - 0
mautrix_instagram/user.py

@@ -275,6 +275,7 @@ class User(DBUser, BaseUser):
             self.state,
             log=self.ig_base_log.getChild("mqtt").getChild(self.mxid),
             proxy_handler=self.proxy_handler,
+            mqtt_keepalive=self.config["instagram.mqtt_keepalive"],
         )
         self.mqtt.add_event_handler(Connect, self.on_connect)
         self.mqtt.add_event_handler(Disconnect, self.on_disconnect)