Browse Source

Proper restarting of server

pull/381/merge
Ruud 13 years ago
parent
commit
a5c8747fee
  1. 33
      couchpotato/core/_base/_core/main.py
  2. 1
      couchpotato/environment.py
  3. 12
      couchpotato/runner.py

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

@ -5,7 +5,7 @@ from couchpotato.core.helpers.variable import cleanHost, md5
from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin
from couchpotato.environment import Env
from flask import request
from tornado.ioloop import IOLoop
from uuid import uuid4
import os
import platform
@ -18,7 +18,7 @@ log = CPLog(__name__)
class Core(Plugin):
ignore_restart = ['Core.crappyRestart', 'Core.crappyShutdown']
ignore_restart = ['Core.crappyRestart', 'Core.crappyShutdown', 'Updater.check']
shutdown_started = False
def __init__(self):
@ -63,30 +63,28 @@ class Core(Plugin):
if self.shutdown_started:
return
try:
self.urlopen('%s/app.shutdown' % self.createApiUrl(), show_error = False)
return True
except:
self.initShutdown()
return False
self.initShutdown()
return True
def crappyRestart(self):
if self.shutdown_started:
return
try:
self.urlopen('%s/app.restart' % self.createApiUrl(), show_error = False)
return True
except:
self.initShutdown(restart = True)
return False
self.initShutdown(restart = True)
return True
def shutdown(self):
self.initShutdown()
def shutdown():
self.initShutdown()
IOLoop.instance().add_callback(shutdown)
return 'shutdown'
def restart(self):
self.initShutdown(restart = True)
def restart():
self.initShutdown(restart = True)
IOLoop.instance().add_callback(restart)
return 'restarting'
def initShutdown(self, restart = False):
@ -121,7 +119,8 @@ class Core(Plugin):
log.debug('Save to shutdown/restart')
try:
request.environ.get('werkzeug.server.shutdown')()
Env.get('httpserver').stop()
IOLoop.instance().stop()
except RuntimeError:
pass
except:

1
couchpotato/environment.py

@ -23,6 +23,7 @@ class Env(object):
_deamonize = False
_desktop = None
_session = None
_httpserver = None
''' Data paths and directories '''
_app_dir = ""

12
couchpotato/runner.py

@ -233,16 +233,18 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
fireEventAsync('app.load')
# Go go go!
web_container = WSGIContainer(app)
web_container._log = _log
http_server = HTTPServer(web_container, no_keep_alive = True)
Env.set('httpserver', http_server)
loop = IOLoop.instance()
try_restart = True
restart_tries = 5
while try_restart:
try:
web_container = WSGIContainer(app)
web_container._log = _log
http_server = HTTPServer(web_container)
http_server.listen(config['port'], config['host'])
loop = IOLoop.instance()
if config['use_reloader']:
autoreload.start(loop)

Loading…
Cancel
Save