Skip to content

Commit 9f45bda

Browse files
committed
Added more informative logs about rate limits
1 parent ae09db7 commit 9f45bda

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

tb_device_mqtt.py

+26-12
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,9 @@ def check_limit_reached(self, amount=1):
220220
if self._rate_limit_dict[rate_limit_time]["start"] + rate_limit_time <= current_time:
221221
self._rate_limit_dict[rate_limit_time]["start"] = current_time
222222
self._rate_limit_dict[rate_limit_time]["counter"] = 0
223-
if rate_limit_info['counter'] + amount > rate_limit_info['limit']:
224-
return rate_limit_time
223+
current_limit = rate_limit_info['limit']
224+
if rate_limit_info['counter'] + amount > current_limit:
225+
return current_limit, rate_limit_time
225226
return False
226227

227228
def get_minimal_limit(self):
@@ -743,7 +744,7 @@ def on_service_configuration(self, _, response, *args, **kwargs):
743744
if service_config.get('maxPayloadSize'):
744745
self.max_payload_size = int(int(service_config.get('maxPayloadSize')) * 80 / 100)
745746
log.info("Service configuration was successfully retrieved and applied.")
746-
log.info("Current limits: %r", service_config)
747+
log.info("Current device limits: %r", service_config)
747748
self.rate_limits_received = True
748749

749750
def set_server_side_rpc_request_handler(self, handler):
@@ -762,8 +763,11 @@ def _wait_for_rate_limit_released(self, timeout, message_rate_limit, dp_rate_lim
762763
log_posted = False
763764
waited = False
764765
while limit_reached_check:
765-
limit_reached_check = (message_rate_limit.check_limit_reached()
766-
or (dp_rate_limit is not None and dp_rate_limit.check_limit_reached(amount=amount))
766+
767+
message_rate_limit_check = message_rate_limit.check_limit_reached()
768+
datapoints_rate_limit_check = dp_rate_limit.check_limit_reached(amount=amount) if dp_rate_limit is not None else False
769+
limit_reached_check = (message_rate_limit_check
770+
or datapoints_rate_limit_check
767771
or not self.is_connected())
768772
if timeout < limit_reached_check:
769773
timeout = limit_reached_check
@@ -777,15 +781,25 @@ def _wait_for_rate_limit_released(self, timeout, message_rate_limit, dp_rate_lim
777781
disconnected = True
778782
timeout = max(timeout, 180) + 10
779783
if int(monotonic()) >= timeout + start_time:
780-
log.warning("Timeout while waiting for rate limit for %i seconds to be released!", limit_reached_check)
784+
if message_rate_limit_check:
785+
log.warning("Timeout while waiting for rate limit for messages to be released! Rate limit: %r:%r",
786+
message_rate_limit_check,
787+
message_rate_limit_check)
788+
elif datapoints_rate_limit_check:
789+
log.warning("Timeout while waiting for rate limit for data points to be released! Rate limit: %r:%r",
790+
datapoints_rate_limit_check,
791+
datapoints_rate_limit_check)
781792
return TBPublishInfo(paho.MQTTMessageInfo(None))
782793
if not log_posted and limit_reached_check:
783-
if isinstance(limit_reached_check, int):
784-
log.debug("Rate limit reached for %i seconds, waiting for rate limit to be released...",
785-
limit_reached_check)
786-
waited = True
787-
else:
788-
log.debug("Waiting for rate limit to be released...")
794+
if message_rate_limit_check:
795+
log.debug("Rate limit for messages [%r:%r] - reached, waiting for rate limit to be released...",
796+
message_rate_limit_check,
797+
message_rate_limit_check)
798+
elif datapoints_rate_limit_check:
799+
log.debug("Rate limit for data points [%r:%r] - reached, waiting for rate limit to be released...",
800+
datapoints_rate_limit_check,
801+
datapoints_rate_limit_check)
802+
waited = True
789803
log_posted = True
790804
if limit_reached_check:
791805
sleep(.005)

tb_gateway_mqtt.py

+1
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,4 @@ def __on_service_configuration(self, _, response, *args, **kwargs):
323323
{'rateLimits': gateway_device_itself_rate_limit_config, **service_config},
324324
*args,
325325
**kwargs)
326+
log.info("Current gateway limits: %r", service_config)

0 commit comments

Comments
 (0)