Stop e-mail-thread on quit or restart

This commit is contained in:
Ozzie Isaacs 2018-07-31 20:19:43 +02:00
parent b0cbd0a37a
commit 7a38c05f12
2 changed files with 9 additions and 3 deletions

View File

@ -84,6 +84,7 @@ class email_SSL(email):
class EMailThread(threading.Thread): class EMailThread(threading.Thread):
def __init__(self): def __init__(self):
self._stopevent = threading.Event()
threading.Thread.__init__(self) threading.Thread.__init__(self)
self.status = 0 self.status = 0
self.current = 0 self.current = 0
@ -93,16 +94,19 @@ class EMailThread(threading.Thread):
self.asyncSMTP=None self.asyncSMTP=None
def run(self): def run(self):
while 1: while not self._stopevent.isSet():
doLock = threading.Lock() doLock = threading.Lock()
doLock.acquire() doLock.acquire()
if self.current != self.last: if self.current != self.last:
doLock.release() doLock.release()
self.send_raw_email() self.send_raw_email()
self.current += 1 self.current += 1
doLock.release()
time.sleep(1) time.sleep(1)
def stop(self):
self._stopevent.set()
def get_send_status(self): def get_send_status(self):
if self.asyncSMTP: if self.asyncSMTP:
return self.asyncSMTP.getTransferStatus() return self.asyncSMTP.getTransferStatus()
@ -134,7 +138,7 @@ class EMailThread(threading.Thread):
# if more than 50 entries in the list, clean the list # if more than 50 entries in the list, clean the list
addLock = threading.Lock() addLock = threading.Lock()
addLock.acquire() addLock.acquire()
if self.last >= 3: if self.last >= 20:
self.delete_completed_tasks() self.delete_completed_tasks()
# progress, runtime, and status = 0 # progress, runtime, and status = 0
self.queue.append({'data':data, 'settings':settings, 'recipent':recipient, 'starttime': 0, self.queue.append({'data':data, 'settings':settings, 'recipent':recipient, 'starttime': 0,

View File

@ -70,6 +70,7 @@ class server:
if self.restart == True: if self.restart == True:
web.app.logger.info("Performing restart of Calibre-web") web.app.logger.info("Performing restart of Calibre-web")
web.helper.global_eMailThread.stop()
if os.name == 'nt': if os.name == 'nt':
arguments = ["\"" + sys.executable + "\""] arguments = ["\"" + sys.executable + "\""]
for e in sys.argv: for e in sys.argv:
@ -79,6 +80,7 @@ class server:
os.execl(sys.executable, sys.executable, *sys.argv) os.execl(sys.executable, sys.executable, *sys.argv)
else: else:
web.app.logger.info("Performing shutdown of Calibre-web") web.app.logger.info("Performing shutdown of Calibre-web")
web.helper.global_eMailThread.stop()
sys.exit(0) sys.exit(0)
def setRestartTyp(self,starttyp): def setRestartTyp(self,starttyp):