rev120, Cleanup expired RateLimits to avoid memory leak
This commit is contained in:
parent
f7717b1de8
commit
c025503264
2 changed files with 20 additions and 4 deletions
|
@ -4,7 +4,7 @@ import ConfigParser
|
|||
class Config(object):
|
||||
def __init__(self):
|
||||
self.version = "0.2.9"
|
||||
self.rev = 119
|
||||
self.rev = 120
|
||||
self.parser = self.createArguments()
|
||||
argv = sys.argv[:] # Copy command line arguments
|
||||
argv = self.parseConfig(argv) # Add arguments from config file
|
||||
|
|
|
@ -4,8 +4,8 @@ import logging
|
|||
|
||||
log = logging.getLogger("RateLimit")
|
||||
|
||||
called_db = {}
|
||||
queue_db = {}
|
||||
called_db = {} # Holds events last call time
|
||||
queue_db = {} # Commands queued to run
|
||||
|
||||
# Register event as called
|
||||
# Return: None
|
||||
|
@ -75,6 +75,16 @@ def call(event, allowed_again=10, func=None, *args, **kwargs):
|
|||
return back
|
||||
|
||||
|
||||
# Cleanup expired events every 3 minutes
|
||||
def cleanup():
|
||||
while 1:
|
||||
expired = time.time()-60*2 # Cleanup if older than 2 minutes
|
||||
for event in called_db.keys():
|
||||
if called_db[event] < expired:
|
||||
del called_db[event]
|
||||
time.sleep(60*3) # Every 3 minutes
|
||||
gevent.spawn(cleanup)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from gevent import monkey
|
||||
|
@ -103,4 +113,10 @@ if __name__ == "__main__":
|
|||
time.sleep(float(random.randint(1,100))/100)
|
||||
print "Done"
|
||||
|
||||
print called_db, queue_db
|
||||
print "Testing cleanup"
|
||||
thread = callAsync("publish content.json single", 1, publish, "content.json single")
|
||||
print "Needs to cleanup:", called_db, queue_db
|
||||
print "Waiting 3min for cleanup process..."
|
||||
time.sleep(60*3)
|
||||
print "Cleaned up:", called_db, queue_db
|
||||
|
||||
|
|
Loading…
Reference in a new issue