Browse Source

Simpler loader script

pull/84/head
Ruud 13 years ago
parent
commit
a42ff5e038
  1. 100
      CouchPotato.py
  2. 23
      couchpotato/core/_base/_core/main.py

100
CouchPotato.py

@ -1,10 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
from os.path import dirname from os.path import dirname
from signal import signal, SIGTERM
import os import os
import signal
import subprocess import subprocess
import sys import sys
import time
# Root path # Root path
@ -13,60 +12,69 @@ 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.core.logger import CPLog
log = CPLog(__name__)
# Get options via arg class Loader(object):
from couchpotato.runner import getOptions
from couchpotato.core.helpers.variable import getDataDir
options = getOptions(base_path, sys.argv[1:])
data_dir = getDataDir()
def start(): do_restart = True
try:
args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:]
new_environ = os.environ.copy()
new_environ['cp_main'] = 'true'
if os.name == 'nt':
for key, value in new_environ.iteritems():
if isinstance(value, unicode):
new_environ[key] = value.encode('iso-8859-1')
subprocess.call(args, env = new_environ)
return os.path.isfile(os.path.join(data_dir, 'restart'))
except KeyboardInterrupt, e:
pass
except Exception, e:
log.critical(e)
return 0
from couchpotato.runner import runCouchPotato def __init__(self):
def main():
if os.environ.get('cp_main', 'false') == 'true': from couchpotato.core.logger import CPLog
try: self.log = CPLog(__name__)
runCouchPotato(options, base_path, sys.argv[1:])
except Exception, e:
log.critical(e)
else:
while 1:
restart = start()
if not restart:
break
# Get options via arg
from couchpotato.runner import getOptions
from couchpotato.core.helpers.variable import getDataDir
self.options = getOptions(base_path, sys.argv[1:])
self.data_dir = getDataDir()
def addSignals(self):
signal.signal(signal.SIGINT, self.onExit)
signal.signal(signal.SIGTERM, lambda signum, stack_frame: sys.exit(1))
from couchpotato.core.event import addEvent
addEvent('app.after_shutdown', self.afterShutdown)
def afterShutdown(self, restart):
self.do_restart = restart
def onExit(self, signal, frame):
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent
fireEvent('app.crappy_shutdown', single = True) fireEvent('app.crappy_shutdown', single = True)
time.sleep(1)
sys.exit() def run(self):
if __name__ == '__main__': self.addSignals()
signal(SIGTERM, lambda signum, stack_frame: sys.exit(1)) try:
from couchpotato.runner import runCouchPotato
runCouchPotato(self.options, base_path, sys.argv[1:])
except Exception, e:
self.log.critical(e)
if self.do_restart:
self.restart()
sys.exit(0)
def restart(self):
try:
args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:]
subprocess.Popen(args)
except Exception, e:
self.log.critical(e)
return 0
if options.daemon and options.pid_file and not os.environ.get('cp_main'): def daemonize(self):
if self.options.daemon and self.options.pid_file:
from daemon import Daemon from daemon import Daemon
daemon = Daemon(options.pid_file) daemon = Daemon(self.options.pid_file)
daemon.daemonize() daemon.daemonize()
main()
if __name__ == '__main__':
l = Loader()
l.daemonize()
l.run()

23
couchpotato/core/_base/_core/main.py

@ -8,7 +8,6 @@ from couchpotato.environment import Env
from flask import request from flask import request
from uuid import uuid4 from uuid import uuid4
import os import os
import thread
import time import time
import traceback import traceback
import webbrowser import webbrowser
@ -32,7 +31,6 @@ class Core(Plugin):
addEvent('app.crappy_shutdown', self.crappyShutdown) addEvent('app.crappy_shutdown', self.crappyShutdown)
addEvent('app.crappy_restart', self.crappyRestart) addEvent('app.crappy_restart', self.crappyRestart)
addEvent('app.load', self.launchBrowser, priority = 1) addEvent('app.load', self.launchBrowser, priority = 1)
addEvent('app.load', self.monitorParent)
addEvent('app.base_url', self.createBaseUrl) addEvent('app.base_url', self.createBaseUrl)
addEvent('app.api_url', self.createApiUrl) addEvent('app.api_url', self.createApiUrl)
@ -41,27 +39,6 @@ class Core(Plugin):
self.removeRestartFile() self.removeRestartFile()
def monitorParent(self):
def looping():
do_shutdown = False
while 1 and not self.shuttingDown():
if os.name == 'nt':
if os.getppid(os.getpid()) <= 1:
do_shutdown = True
break
else:
if os.getppid() <= 1:
do_shutdown = True
break
time.sleep(1)
if do_shutdown:
log.info('Starterscript has shutdown, shutdown subprocess')
fireEvent('app.crappy_shutdown')
thread.start_new_thread(looping, ())
def md5Password(self, value): def md5Password(self, value):
return md5(value) if value else '' return md5(value) if value else ''

Loading…
Cancel
Save