Shut down UiServer if FileServer startup failed
This commit is contained in:
parent
93e6ec4933
commit
d7db631b95
2 changed files with 21 additions and 1 deletions
|
@ -46,6 +46,7 @@ class ConnectionServer(object):
|
||||||
self.stream_server = None
|
self.stream_server = None
|
||||||
self.stream_server_proxy = None
|
self.stream_server_proxy = None
|
||||||
self.running = False
|
self.running = False
|
||||||
|
self.stopping = False
|
||||||
|
|
||||||
self.stat_recv = defaultdict(lambda: defaultdict(int))
|
self.stat_recv = defaultdict(lambda: defaultdict(int))
|
||||||
self.stat_sent = defaultdict(lambda: defaultdict(int))
|
self.stat_sent = defaultdict(lambda: defaultdict(int))
|
||||||
|
@ -76,6 +77,8 @@ class ConnectionServer(object):
|
||||||
self.handleRequest = request_handler
|
self.handleRequest = request_handler
|
||||||
|
|
||||||
def start(self, check_connections=True):
|
def start(self, check_connections=True):
|
||||||
|
if self.stopping:
|
||||||
|
return False
|
||||||
self.running = True
|
self.running = True
|
||||||
if check_connections:
|
if check_connections:
|
||||||
self.thread_checker = gevent.spawn(self.checkConnections)
|
self.thread_checker = gevent.spawn(self.checkConnections)
|
||||||
|
@ -99,16 +102,19 @@ class ConnectionServer(object):
|
||||||
|
|
||||||
def listen(self):
|
def listen(self):
|
||||||
if not self.running:
|
if not self.running:
|
||||||
return False
|
return None
|
||||||
|
|
||||||
if self.stream_server_proxy:
|
if self.stream_server_proxy:
|
||||||
gevent.spawn(self.listenProxy)
|
gevent.spawn(self.listenProxy)
|
||||||
try:
|
try:
|
||||||
self.stream_server.serve_forever()
|
self.stream_server.serve_forever()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.log.info("StreamServer listen error: %s" % err)
|
self.log.info("StreamServer listen error: %s" % err)
|
||||||
|
return False
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.log.debug("Stopping")
|
self.log.debug("Stopping")
|
||||||
|
self.stopping = True
|
||||||
self.running = False
|
self.running = False
|
||||||
if self.stream_server:
|
if self.stream_server:
|
||||||
self.stream_server.stop()
|
self.stream_server.stop()
|
||||||
|
|
|
@ -2,6 +2,7 @@ import logging
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
import socket
|
import socket
|
||||||
|
import sys
|
||||||
|
|
||||||
import gevent
|
import gevent
|
||||||
import gevent.pool
|
import gevent.pool
|
||||||
|
@ -346,7 +347,20 @@ class FileServer(ConnectionServer):
|
||||||
|
|
||||||
# Bind and start serving sites
|
# Bind and start serving sites
|
||||||
def start(self, check_sites=True):
|
def start(self, check_sites=True):
|
||||||
|
if self.stopping:
|
||||||
|
return False
|
||||||
|
|
||||||
ConnectionServer.start(self)
|
ConnectionServer.start(self)
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.stream_server.start()
|
||||||
|
except Exception as err:
|
||||||
|
self.log.error("Error listening on: %s:%s: %s" % (self.ip, self.port, err))
|
||||||
|
if "ui_server" in dir(sys.modules["main"]):
|
||||||
|
self.log.debug("Stopping UI Server.")
|
||||||
|
sys.modules["main"].ui_server.stop()
|
||||||
|
return False
|
||||||
|
|
||||||
self.sites = self.site_manager.list()
|
self.sites = self.site_manager.list()
|
||||||
if config.debug:
|
if config.debug:
|
||||||
# Auto reload FileRequest on change
|
# Auto reload FileRequest on change
|
||||||
|
|
Loading…
Reference in a new issue