mirror of https://github.com/janLo/punkow
Fix graceful shutdown hang
This commit is contained in:
parent
046bd77008
commit
dcaafd6bb6
|
|
@ -38,9 +38,11 @@ def main(host, port, db, interval, debug, tz, special,
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
level=level,
|
level=level,
|
||||||
# format='%(asctime)s %(levelname)s: %(message)s',
|
format='%(levelname)s: %(name)s: %(message)s',
|
||||||
datefmt='%Y-%m-%d %H:%M:%S')
|
datefmt='%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
logger = logging.getLogger("booking_service")
|
||||||
|
|
||||||
db_mngr = model.DatabaseManager(db)
|
db_mngr = model.DatabaseManager(db)
|
||||||
db_mngr.create_schema()
|
db_mngr.create_schema()
|
||||||
|
|
||||||
|
|
@ -55,12 +57,15 @@ def main(host, port, db, interval, debug, tz, special,
|
||||||
wrk.start()
|
wrk.start()
|
||||||
|
|
||||||
app = interface.App(db_mngr, mail, base_url=url)
|
app = interface.App(db_mngr, mail, base_url=url)
|
||||||
loop.create_task(app.register_server(host, port))
|
loop.create_task(app.start(host, port))
|
||||||
|
|
||||||
def stop():
|
def stop():
|
||||||
|
logger.info("Stop Punkow ... ")
|
||||||
|
|
||||||
async def _do_stop():
|
async def _do_stop():
|
||||||
await asyncio.gather(wrk.stop(), app.stop())
|
await asyncio.gather(wrk.stop(), app.stop())
|
||||||
loop.stop()
|
loop.stop()
|
||||||
|
logger.info("Goodbye!")
|
||||||
|
|
||||||
loop.create_task(_do_stop())
|
loop.create_task(_do_stop())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ class App(object):
|
||||||
def run(self, host: str = None, port: int = None):
|
def run(self, host: str = None, port: int = None):
|
||||||
web.run_app(self.app, host=host, port=port)
|
web.run_app(self.app, host=host, port=port)
|
||||||
|
|
||||||
async def register_server(self, host: str = None, port: int = None):
|
async def start(self, host: str = None, port: int = None):
|
||||||
app_runner = web.AppRunner(self.app, access_log=logger)
|
app_runner = web.AppRunner(self.app, access_log=logger)
|
||||||
await app_runner.setup()
|
await app_runner.setup()
|
||||||
self.site = web.TCPSite(app_runner, host, port)
|
self.site = web.TCPSite(app_runner, host, port)
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ class Timer(object):
|
||||||
elapsed = (end - start).total_seconds()
|
elapsed = (end - start).total_seconds()
|
||||||
sleep = max(0.0, self._wait_time(end) - elapsed)
|
sleep = max(0.0, self._wait_time(end) - elapsed)
|
||||||
logger.debug("Booking run completed in %0.2f seconds - now sleep for %0.2f seconds", elapsed, sleep)
|
logger.debug("Booking run completed in %0.2f seconds - now sleep for %0.2f seconds", elapsed, sleep)
|
||||||
self._sleep_coro = asyncio.sleep(sleep)
|
self._sleep_coro = asyncio.ensure_future(asyncio.sleep(sleep))
|
||||||
try:
|
try:
|
||||||
await self._sleep_coro
|
await self._sleep_coro
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
|
|
|
||||||
|
|
@ -208,5 +208,7 @@ class Worker(object):
|
||||||
self._running = False
|
self._running = False
|
||||||
|
|
||||||
if self._run_future is not None:
|
if self._run_future is not None:
|
||||||
|
self._timer.cancel()
|
||||||
|
|
||||||
await self._run_future
|
await self._run_future
|
||||||
self._run_future = None
|
self._run_future = None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue