@@ -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 )
0 commit comments