|
@ -15,19 +15,8 @@ base_path = dirname(os.path.abspath(__file__)) |
|
|
# Insert local directories into path |
|
|
# Insert local directories into path |
|
|
sys.path.insert(0, os.path.join(base_path, 'libs')) |
|
|
sys.path.insert(0, os.path.join(base_path, 'libs')) |
|
|
|
|
|
|
|
|
|
|
|
from couchpotato.environment import Env |
|
|
from couchpotato.core.helpers.variable import getDataDir |
|
|
from couchpotato.core.helpers.variable import getDataDir |
|
|
data_dir = getDataDir() |
|
|
|
|
|
|
|
|
|
|
|
# Logging |
|
|
|
|
|
from couchpotato.core.logger import CPLog |
|
|
|
|
|
log = CPLog(__name__) |
|
|
|
|
|
|
|
|
|
|
|
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') |
|
|
|
|
|
hdlr = handlers.RotatingFileHandler(os.path.join(data_dir, 'error.log'), 'a', 500000, 10) |
|
|
|
|
|
hdlr.setLevel(logging.CRITICAL) |
|
|
|
|
|
hdlr.setFormatter(formatter) |
|
|
|
|
|
log.logger.addHandler(hdlr) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Loader(object): |
|
|
class Loader(object): |
|
|
|
|
|
|
|
@ -39,6 +28,33 @@ class Loader(object): |
|
|
from couchpotato.runner import getOptions |
|
|
from couchpotato.runner import getOptions |
|
|
self.options = getOptions(base_path, sys.argv[1:]) |
|
|
self.options = getOptions(base_path, sys.argv[1:]) |
|
|
|
|
|
|
|
|
|
|
|
# Load settings |
|
|
|
|
|
settings = Env.get('settings') |
|
|
|
|
|
settings.setFile(self.options.config_file) |
|
|
|
|
|
|
|
|
|
|
|
# Create data dir if needed |
|
|
|
|
|
self.data_dir = os.path.expanduser(Env.setting('data_dir')) |
|
|
|
|
|
if self.data_dir == '': |
|
|
|
|
|
self.data_dir = getDataDir() |
|
|
|
|
|
|
|
|
|
|
|
if not os.path.isdir(self.data_dir): |
|
|
|
|
|
os.makedirs(self.data_dir) |
|
|
|
|
|
|
|
|
|
|
|
# Create logging dir |
|
|
|
|
|
self.log_dir = os.path.join(self.data_dir, 'logs'); |
|
|
|
|
|
if not os.path.isdir(self.log_dir): |
|
|
|
|
|
os.mkdir(self.log_dir) |
|
|
|
|
|
|
|
|
|
|
|
# Logging |
|
|
|
|
|
from couchpotato.core.logger import CPLog |
|
|
|
|
|
self.log = CPLog(__name__) |
|
|
|
|
|
|
|
|
|
|
|
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') |
|
|
|
|
|
hdlr = handlers.RotatingFileHandler(os.path.join(self.log_dir, 'error.log'), 'a', 500000, 10) |
|
|
|
|
|
hdlr.setLevel(logging.CRITICAL) |
|
|
|
|
|
hdlr.setFormatter(formatter) |
|
|
|
|
|
self.log.logger.addHandler(hdlr) |
|
|
|
|
|
|
|
|
def addSignals(self): |
|
|
def addSignals(self): |
|
|
|
|
|
|
|
|
signal.signal(signal.SIGINT, self.onExit) |
|
|
signal.signal(signal.SIGINT, self.onExit) |
|
@ -58,14 +74,8 @@ class Loader(object): |
|
|
|
|
|
|
|
|
self.addSignals() |
|
|
self.addSignals() |
|
|
|
|
|
|
|
|
try: |
|
|
from couchpotato.runner import runCouchPotato |
|
|
from couchpotato.runner import runCouchPotato |
|
|
runCouchPotato(self.options, base_path, sys.argv[1:], data_dir = self.data_dir, log_dir = self.log_dir, Env = Env) |
|
|
runCouchPotato(self.options, base_path, sys.argv[1:]) |
|
|
|
|
|
except SystemExit as errno: |
|
|
|
|
|
if errno is 3: |
|
|
|
|
|
raise |
|
|
|
|
|
except: |
|
|
|
|
|
raise |
|
|
|
|
|
|
|
|
|
|
|
if self.do_restart: |
|
|
if self.do_restart: |
|
|
self.restart() |
|
|
self.restart() |
|
@ -77,12 +87,12 @@ class Loader(object): |
|
|
if self.runAsDaemon(): |
|
|
if self.runAsDaemon(): |
|
|
self.daemon.delpid() |
|
|
self.daemon.delpid() |
|
|
except: |
|
|
except: |
|
|
log.critical(traceback.format_exc()) |
|
|
self.log.critical(traceback.format_exc()) |
|
|
|
|
|
|
|
|
args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] |
|
|
args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] |
|
|
subprocess.Popen(args) |
|
|
subprocess.Popen(args) |
|
|
except: |
|
|
except: |
|
|
log.critical(traceback.format_exc()) |
|
|
self.log.critical(traceback.format_exc()) |
|
|
|
|
|
|
|
|
def daemonize(self): |
|
|
def daemonize(self): |
|
|
|
|
|
|
|
@ -94,7 +104,7 @@ class Loader(object): |
|
|
except SystemExit: |
|
|
except SystemExit: |
|
|
raise |
|
|
raise |
|
|
except: |
|
|
except: |
|
|
log.critical(traceback.format_exc()) |
|
|
self.log.critical(traceback.format_exc()) |
|
|
|
|
|
|
|
|
def runAsDaemon(self): |
|
|
def runAsDaemon(self): |
|
|
return self.options.daemon and self.options.pid_file |
|
|
return self.options.daemon and self.options.pid_file |
|
@ -109,6 +119,9 @@ if __name__ == '__main__': |
|
|
pass |
|
|
pass |
|
|
except SystemExit: |
|
|
except SystemExit: |
|
|
raise |
|
|
raise |
|
|
except Exception as (errno, msg): |
|
|
except Exception as (nr, msg): |
|
|
if errno != 4: |
|
|
if nr != 4: |
|
|
log.critical(traceback.format_exc()) |
|
|
try: |
|
|
|
|
|
l.log.critical(traceback.format_exc()) |
|
|
|
|
|
except: |
|
|
|
|
|
print traceback.format_exc() |
|
|