Advertisement
Guest User

Untitled

a guest
Jun 30th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1. import datetime
  2. from threading import Thread
  3.  
  4.  
  5. class TrottleError(Exception):
  6.     pass
  7.  
  8.  
  9. class Trottling(object):
  10.     max_count = 30
  11.     trottle_time = 1
  12.     call_time_message = []
  13.  
  14.     def get_stop_index(self, enter_time):
  15.         stop_index = 0
  16.         for i in range(len(self.call_time_message)):
  17.             if enter_time - self.call_time_message[i][0] < self.trottle_time:
  18.                 stop_index = i
  19.                 break
  20.         return stop_index
  21.  
  22.     def check_trottle_count(self, message):
  23.         enter_time = datetime.datetime.now()
  24.         if len(self.call_time_message) < self.max_count:
  25.             self.sendHttpRequest(message)
  26.             self.call_time_message.append((enter_time, message))
  27.         else:
  28.             stop_index = self.get_stop_index(enter_time)
  29.             for i in range(stop_index + 1):
  30.                 message = self.call_time_message.pop(0)[1]
  31.                 self.sendHttpRequest(message)
  32.             if len(self.call_time_message) > self.max_count:
  33.                 raise TrottleError
  34.  
  35.     def send(self, message):
  36.         self.check_trottle_count(message)
  37.  
  38.     def sendHttpRequest(self, message):
  39.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement