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(
|
||||
level=level,
|
||||
# format='%(asctime)s %(levelname)s: %(message)s',
|
||||
format='%(levelname)s: %(name)s: %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S')
|
||||
|
||||
logger = logging.getLogger("booking_service")
|
||||
|
||||
db_mngr = model.DatabaseManager(db)
|
||||
db_mngr.create_schema()
|
||||
|
||||
|
|
@ -55,12 +57,15 @@ def main(host, port, db, interval, debug, tz, special,
|
|||
wrk.start()
|
||||
|
||||
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():
|
||||
logger.info("Stop Punkow ... ")
|
||||
|
||||
async def _do_stop():
|
||||
await asyncio.gather(wrk.stop(), app.stop())
|
||||
loop.stop()
|
||||
logger.info("Goodbye!")
|
||||
|
||||
loop.create_task(_do_stop())
|
||||
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ class App(object):
|
|||
def run(self, host: str = None, port: int = None):
|
||||
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)
|
||||
await app_runner.setup()
|
||||
self.site = web.TCPSite(app_runner, host, port)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ class Timer(object):
|
|||
elapsed = (end - start).total_seconds()
|
||||
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)
|
||||
self._sleep_coro = asyncio.sleep(sleep)
|
||||
self._sleep_coro = asyncio.ensure_future(asyncio.sleep(sleep))
|
||||
try:
|
||||
await self._sleep_coro
|
||||
except asyncio.CancelledError:
|
||||
|
|
|
|||
|
|
@ -208,5 +208,7 @@ class Worker(object):
|
|||
self._running = False
|
||||
|
||||
if self._run_future is not None:
|
||||
self._timer.cancel()
|
||||
|
||||
await self._run_future
|
||||
self._run_future = None
|
||||
|
|
|
|||
Loading…
Reference in New Issue