mirror of https://github.com/morpheus65535/bazarr
wip
This commit is contained in:
parent
0dcf47f126
commit
ff873e87ec
|
@ -53,7 +53,10 @@ dir_name = os.path.dirname(__file__)
|
|||
def end_child_process(ep):
|
||||
try:
|
||||
if os.name != 'nt':
|
||||
ep.send_signal(signal.SIGINT)
|
||||
try:
|
||||
ep.send_signal(signal.SIGINT)
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
else:
|
||||
import win32api
|
||||
import win32con
|
||||
|
@ -69,6 +72,7 @@ def start_bazarr():
|
|||
script = [get_python_path(), "-u", os.path.normcase(os.path.join(dir_name, 'bazarr', 'main.py'))] + sys.argv[1:]
|
||||
ep = subprocess.Popen(script, stdout=None, stderr=None, stdin=subprocess.DEVNULL)
|
||||
atexit.register(end_child_process, ep=ep)
|
||||
signal.signal(signal.SIGTERM, lambda signal_no, frame: end_child_process(ep))
|
||||
|
||||
|
||||
def check_status():
|
||||
|
|
|
@ -5,6 +5,7 @@ import json
|
|||
import logging
|
||||
import os
|
||||
import flask_migrate
|
||||
import signal
|
||||
|
||||
from dogpile.cache import make_region
|
||||
from datetime import datetime
|
||||
|
@ -12,7 +13,7 @@ from datetime import datetime
|
|||
from sqlalchemy import create_engine, inspect, DateTime, ForeignKey, Integer, LargeBinary, Text, func, text, BigInteger
|
||||
# importing here to be indirectly imported in other modules later
|
||||
from sqlalchemy import update, delete, select, func # noqa W0611
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker, mapped_column
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker, mapped_column, close_all_sessions
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.pool import NullPool
|
||||
|
||||
|
@ -74,11 +75,18 @@ session_factory = sessionmaker(bind=engine)
|
|||
database = scoped_session(session_factory)
|
||||
|
||||
|
||||
def close_database():
|
||||
close_all_sessions()
|
||||
engine.dispose()
|
||||
|
||||
|
||||
@atexit.register
|
||||
def _stop_worker_threads():
|
||||
database.remove()
|
||||
|
||||
|
||||
signal.signal(signal.SIGTERM, lambda signal_no, frame: close_database())
|
||||
|
||||
Base = declarative_base()
|
||||
metadata = Base.metadata
|
||||
|
||||
|
|
|
@ -8,13 +8,12 @@ import errno
|
|||
|
||||
from waitress.server import create_server
|
||||
from time import sleep
|
||||
from sqlalchemy.orm import close_all_sessions
|
||||
|
||||
from api import api_bp
|
||||
from .ui import ui_bp
|
||||
from .get_args import args
|
||||
from .config import settings, base_url
|
||||
from .database import database
|
||||
from .database import close_database
|
||||
from .app import create_app
|
||||
|
||||
app = create_app()
|
||||
|
@ -75,37 +74,29 @@ class Server:
|
|||
|
||||
def shutdown(self):
|
||||
try:
|
||||
self.server.close()
|
||||
stop_file = io.open(os.path.join(args.config_dir, "bazarr.stop"), "w", encoding='UTF-8')
|
||||
except Exception as e:
|
||||
logging.error(f'BAZARR Cannot stop Waitress: {repr(e)}')
|
||||
logging.error(f'BAZARR Cannot create stop file: {repr(e)}')
|
||||
else:
|
||||
close_all_sessions()
|
||||
try:
|
||||
stop_file = io.open(os.path.join(args.config_dir, "bazarr.stop"), "w", encoding='UTF-8')
|
||||
except Exception as e:
|
||||
logging.error(f'BAZARR Cannot create stop file: {repr(e)}')
|
||||
else:
|
||||
logging.info('Bazarr is being shutdown...')
|
||||
stop_file.write(str(''))
|
||||
stop_file.close()
|
||||
os._exit(0)
|
||||
logging.info('Bazarr is being shutdown...')
|
||||
stop_file.write(str(''))
|
||||
stop_file.close()
|
||||
close_database()
|
||||
self.server.close()
|
||||
os._exit(0)
|
||||
|
||||
def restart(self):
|
||||
try:
|
||||
self.server.close()
|
||||
restart_file = io.open(os.path.join(args.config_dir, "bazarr.restart"), "w", encoding='UTF-8')
|
||||
except Exception as e:
|
||||
logging.error(f'BAZARR Cannot stop Waitress: {repr(e)}')
|
||||
logging.error(f'BAZARR Cannot create restart file: {repr(e)}')
|
||||
else:
|
||||
close_all_sessions()
|
||||
try:
|
||||
restart_file = io.open(os.path.join(args.config_dir, "bazarr.restart"), "w", encoding='UTF-8')
|
||||
except Exception as e:
|
||||
logging.error(f'BAZARR Cannot create restart file: {repr(e)}')
|
||||
else:
|
||||
logging.info('Bazarr is being restarted...')
|
||||
restart_file.write(str(''))
|
||||
restart_file.close()
|
||||
os._exit(0)
|
||||
logging.info('Bazarr is being restarted...')
|
||||
restart_file.write(str(''))
|
||||
restart_file.close()
|
||||
close_database()
|
||||
self.server.close()
|
||||
os._exit(0)
|
||||
|
||||
|
||||
webserver = Server()
|
||||
|
|
Loading…
Reference in New Issue