Proper restarting of server

This commit is contained in:
Ruud
2012-05-19 17:32:00 +02:00
parent 0b034eb0fa
commit a5c8747fee
3 changed files with 24 additions and 22 deletions
+16 -17
View File
@@ -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
View File
@@ -23,6 +23,7 @@ class Env(object):
_deamonize = False
_desktop = None
_session = None
_httpserver = None
''' Data paths and directories '''
_app_dir = ""
+7 -5
View File
@@ -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)