@@ -220,8 +220,9 @@ def check_limit_reached(self, amount=1):
220
220
if self ._rate_limit_dict [rate_limit_time ]["start" ] + rate_limit_time <= current_time :
221
221
self ._rate_limit_dict [rate_limit_time ]["start" ] = current_time
222
222
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
225
226
return False
226
227
227
228
def get_minimal_limit (self ):
@@ -743,7 +744,7 @@ def on_service_configuration(self, _, response, *args, **kwargs):
743
744
if service_config .get ('maxPayloadSize' ):
744
745
self .max_payload_size = int (int (service_config .get ('maxPayloadSize' )) * 80 / 100 )
745
746
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 )
747
748
self .rate_limits_received = True
748
749
749
750
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
762
763
log_posted = False
763
764
waited = False
764
765
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
767
771
or not self .is_connected ())
768
772
if timeout < limit_reached_check :
769
773
timeout = limit_reached_check
@@ -777,15 +781,25 @@ def _wait_for_rate_limit_released(self, timeout, message_rate_limit, dp_rate_lim
777
781
disconnected = True
778
782
timeout = max (timeout , 180 ) + 10
779
783
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 )
781
792
return TBPublishInfo (paho .MQTTMessageInfo (None ))
782
793
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
789
803
log_posted = True
790
804
if limit_reached_check :
791
805
sleep (.005 )
0 commit comments