More aggressive clearing of inbox queue

merge-requests/30/head
Bob Mottram 2020-03-25 10:07:16 +00:00
parent 23bb250deb
commit 25bff0dfbf
1 changed files with 18 additions and 17 deletions

View File

@ -721,22 +721,23 @@ class PubServer(BaseHTTPRequestHandler):
def _inboxQueueCleardown(self) -> None: def _inboxQueueCleardown(self) -> None:
""" Check if the queue is full and remove oldest items if it is """ Check if the queue is full and remove oldest items if it is
""" """
if len(self.server.inboxQueue)>=self.server.maxQueueLength: if len(self.server.inboxQueue)<self.server.maxQueueLength:
print('Inbox queue is full ('+str(self.server.maxQueueLength)+' items). Removing oldest items.') return
cleardownStartTime=time.time() print('Inbox queue is full ('+str(self.server.maxQueueLength)+' items). Removing oldest items.')
removals=0 cleardownStartTime=time.time()
while len(self.server.inboxQueue) >= self.server.maxQueueLength-4: removals=0
queueFilename=self.server.inboxQueue[0] while len(self.server.inboxQueue) >= self.server.maxQueueLength/2:
if os.path.isfile(queueFilename): queueFilename=self.server.inboxQueue[0]
try: if os.path.isfile(queueFilename):
os.remove(queueFilename) try:
removals+=1 os.remove(queueFilename)
except: removals+=1
print('WARN: unable to remove inbox queue file '+queueFilename) except:
pass print('WARN: unable to remove inbox queue file '+queueFilename)
self.server.inboxQueue.pop(0) pass
timeDiff=str(int((time.time()-cleardownStartTime)*1000)) self.server.inboxQueue.pop(0)
print('Inbox cleardown took '+timeDiff+' mS. Removed '+str(removals)+' items.') timeDiff=str(int((time.time()-cleardownStartTime)*1000))
print('Inbox cleardown took '+timeDiff+' mS. Removed '+str(removals)+' items.')
def _updateInboxQueue(self,nickname: str,messageJson: {}, \ def _updateInboxQueue(self,nickname: str,messageJson: {}, \
messageBytes: str) -> int: messageBytes: str) -> int:
@ -5887,7 +5888,7 @@ class PubServer(BaseHTTPRequestHandler):
self.end_headers() self.end_headers()
self.server.POSTbusy=False self.server.POSTbusy=False
return return
if queueStatus==1: elif queueStatus==1:
self.send_response(503) self.send_response(503)
self.end_headers() self.end_headers()
self.server.POSTbusy=False self.server.POSTbusy=False