fixes stopping of SDK runner

This commit is contained in:
Ronald Steinke 2018-01-10 10:15:44 +01:00
parent d87a075786
commit 866e765c1e
2 changed files with 13 additions and 7 deletions

View File

@ -1,9 +1,8 @@
from signal import SIGTERM, SIGINT from signal import SIGTERM, SIGINT
import gevent.signal
from flask import (Flask, request, abort, redirect, url_for, from flask import (Flask, request, abort, redirect, url_for,
Response as FlaskResponse) Response as FlaskResponse)
from gevent import signal as gevent_signal
from gevent.pywsgi import WSGIServer from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler from geventwebsocket.handler import WebSocketHandler
from socketio import Server as SioServer, Middleware as SioMiddleware from socketio import Server as SioServer, Middleware as SioMiddleware
@ -32,8 +31,8 @@ class SimpleFlaskRunner(AppRunner):
_server = self._get_server() _server = self._get_server()
self.logger.debug("Serving on %s:%s", self.listen_on, self.port) self.logger.debug("Serving on %s:%s", self.listen_on, self.port)
gevent_signal(SIGTERM, _server.stop) gevent.signal(SIGTERM, _server.stop)
gevent_signal(SIGINT, _server.stop) gevent.signal(SIGINT, _server.stop)
_server.serve_forever() _server.serve_forever()
def add_route(self, route, handler, methods=("POST", "GET")): def add_route(self, route, handler, methods=("POST", "GET")):

View File

@ -1,4 +1,8 @@
from gevent import spawn_later, wait from signal import SIGTERM, SIGINT
import gevent.signal
from gevent import spawn_later
from gevent.event import Event as GEventEvent
from futile.logging import LoggerMixin from futile.logging import LoggerMixin
@ -22,7 +26,7 @@ class AppRunner(LoggerMixin):
self.logger.exception("Error") self.logger.exception("Error")
raise raise
finally: finally:
self.logger.debug("Shutting down") self.logger.info("Shutting down.")
self._shutdown_app() self._shutdown_app()
for timer in self._timers: for timer in self._timers:
timer.kill() timer.kill()
@ -30,7 +34,10 @@ class AppRunner(LoggerMixin):
def _run(self): def _run(self):
self.m2m_app.run(self, self.m2m_ep) self.m2m_app.run(self, self.m2m_ep)
wait() shutdown_event = GEventEvent()
gevent.signal(SIGTERM, shutdown_event.set)
gevent.signal(SIGINT, shutdown_event.set)
shutdown_event.wait()
def _shutdown_app(self): def _shutdown_app(self):
self.m2m_app.shutdown() self.m2m_app.shutdown()