Skip to content

Commit 22a38b1

Browse files
committed
Fix for rate limits retriving
1 parent 014971c commit 22a38b1

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

tb_device_mqtt.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -248,16 +248,15 @@ def has_limit(self):
248248
return not self.__no_limit
249249

250250
def set_limit(self, rate_limit, percentage=0):
251-
self.__rate_limit_dict = {}
252251
rate_configs = rate_limit.split(";")
253252
if "," in rate_limit:
254253
rate_configs = rate_limit.split(",")
255254
for rate in rate_configs:
256255
if rate == "":
257256
continue
258257
rate = rate.split(":")
259-
self.__rate_limit_dict[int(rate[1])] = {"counter": self.__rate_limit_dict[int(rate[1])]['counter'],
260-
"start": self.__rate_limit_dict[int(rate[1])]['start'],
258+
self.__rate_limit_dict[int(rate[1])] = {"counter": self.__rate_limit_dict.get(int(rate[1]), {}).get('counter', 0),
259+
"start": self.__rate_limit_dict.get(int(rate[1]), {}).get('start', int(time())),
261260
"limit": int(rate[0]) * percentage / 100}
262261

263262
@staticmethod
@@ -653,12 +652,12 @@ def request_service_configuration(self, callback):
653652
self.send_rpc_call("getSessionLimits", {}, callback)
654653

655654
def on_service_configuration(self, _, service_config, *args, **kwargs):
656-
if not isinstance(service_config, dict) or 'rateLimits' not in service_config:
655+
if not isinstance(service_config, dict) or 'rateLimit' not in service_config:
657656
log.warning("Cannot retrieve service configuration, session will use default configuration.")
658657
log.debug("Received the following response: %r", service_config)
659658
return
660-
if service_config.get("rateLimits"):
661-
rate_limits_config = service_config.get("rateLimits")
659+
if service_config.get("rateLimit"):
660+
rate_limits_config = service_config.get("rateLimit")
662661

663662
if rate_limits_config.get('messages'):
664663
self._messages_rate_limit.set_limit(rate_limits_config.get('messages'), percentage=80)
@@ -670,6 +669,8 @@ def on_service_configuration(self, _, service_config, *args, **kwargs):
670669
self.max_inflight_messages_set(int(service_config.get('maxInflightMessages')))
671670
if service_config.get('maxPayloadSize'):
672671
self.max_payload_size = int(service_config.get('maxPayloadSize'))
672+
log.info("Service configuration was successfully retrieved and applied.")
673+
log.info("Current limits: %r", service_config)
673674

674675
def set_server_side_rpc_request_handler(self, handler):
675676
"""Set the callback that will be called when a server-side RPC is received."""
@@ -922,7 +923,7 @@ def request_attributes(self, client_keys=None, shared_keys=None, callback=None):
922923
tmp = tmp[:len(tmp) - 1]
923924
msg.update({"sharedKeys": tmp})
924925

925-
ts_in_millis = int(time() * 1000)
926+
ts_in_millis = int(time())
926927

927928
attr_request_number = self._add_attr_request_callback(callback)
928929

@@ -944,7 +945,7 @@ def _add_attr_request_callback(self, callback):
944945

945946
def __timeout_check(self):
946947
while not self.stopped:
947-
current_ts_in_millis = int(time() * 1000)
948+
current_ts_in_millis = int(time())
948949
for (attr_request_number, ts) in tuple(self.__attrs_request_timeout.items()):
949950
if current_ts_in_millis < ts:
950951
continue

0 commit comments

Comments
 (0)