mirror of
https://github.com/StuffAnThings/qbit_manage.git
synced 2025-10-25 13:37:08 +08:00
Allow graceful exit when shutting down in docker
This commit is contained in:
parent
4f52fd49c8
commit
7a6603b952
3 changed files with 27 additions and 4 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,3 +1,8 @@
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
*.log*
|
*.log*
|
||||||
*.yml
|
*.yml
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
|
|
||||||
11
modules/docker.py
Normal file
11
modules/docker.py
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import signal
|
||||||
|
|
||||||
|
#Gracefully kill script when docker stops
|
||||||
|
class GracefulKiller:
|
||||||
|
kill_now = False
|
||||||
|
def __init__(self):
|
||||||
|
signal.signal(signal.SIGINT, self.exit_gracefully)
|
||||||
|
signal.signal(signal.SIGTERM, self.exit_gracefully)
|
||||||
|
|
||||||
|
def exit_gracefully(self, *args):
|
||||||
|
self.kill_now = True
|
||||||
|
|
@ -19,10 +19,12 @@ try:
|
||||||
from qbittorrentapi import Client
|
from qbittorrentapi import Client
|
||||||
import yaml
|
import yaml
|
||||||
import schedule
|
import schedule
|
||||||
|
from modules.docker import GracefulKiller
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
print("Requirements Error: Requirements are not installed")
|
print("Requirements Error: Requirements are not installed")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
if sys.version_info[0] != 3 or sys.version_info[1] < 6:
|
if sys.version_info[0] != 3 or sys.version_info[1] < 6:
|
||||||
print("Version Error: Version: %s.%s.%s incompatible please use Python 3.6+" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))
|
print("Version Error: Version: %s.%s.%s incompatible please use Python 3.6+" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
@ -187,7 +189,6 @@ client = Client(host=host,
|
||||||
|
|
||||||
|
|
||||||
############FUNCTIONS##############
|
############FUNCTIONS##############
|
||||||
|
|
||||||
#truncate the value of the torrent url to remove sensitive information
|
#truncate the value of the torrent url to remove sensitive information
|
||||||
def trunc_val(s, d, n=3):
|
def trunc_val(s, d, n=3):
|
||||||
return d.join(s.split(d, n)[:n])
|
return d.join(s.split(d, n)[:n])
|
||||||
|
|
@ -839,7 +840,12 @@ def start():
|
||||||
set_tag_nohardlinks()
|
set_tag_nohardlinks()
|
||||||
set_empty_recycle()
|
set_empty_recycle()
|
||||||
|
|
||||||
|
def end():
|
||||||
|
logger.info("Exiting Qbit_manage")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
killer = GracefulKiller()
|
||||||
logger.info(" _ _ _ ")
|
logger.info(" _ _ _ ")
|
||||||
logger.info(" | | (_) | ")
|
logger.info(" | | (_) | ")
|
||||||
logger.info(" __ _| |__ _| |_ _ __ ___ __ _ _ __ __ _ __ _ ___ ")
|
logger.info(" __ _| |__ _| |_ _ __ ___ __ _ _ __ __ _ __ _ ___ ")
|
||||||
|
|
@ -857,8 +863,9 @@ if __name__ == '__main__':
|
||||||
schedule.every(sch).minutes.do(start)
|
schedule.every(sch).minutes.do(start)
|
||||||
logger.info(f" Scheduled Mode: Running every {sch} minutes.")
|
logger.info(f" Scheduled Mode: Running every {sch} minutes.")
|
||||||
start()
|
start()
|
||||||
while True:
|
while not killer.kill_now:
|
||||||
schedule.run_pending()
|
schedule.run_pending()
|
||||||
time.sleep(60)
|
time.sleep(1)
|
||||||
|
end()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
logger.info("Exiting Qbit_manage")
|
end()
|
||||||
Loading…
Add table
Reference in a new issue