Skip to content
Snippets Groups Projects

msobczyk/handle signals in docker entrypoint

Merged Marcin Sobczyk requested to merge msobczyk/handle-signals-in-docker-entrypoint into develop
Compare and Show latest version
5 files
+ 63
6
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 16
0
from __future__ import annotations
import asyncio
import signal
import sys
import warnings
@@ -11,10 +13,24 @@ def _hide_never_awaited_warnings_in_non_dev_mode() -> None:
warnings.filterwarnings("ignore", message=".* was never awaited")
async def _shutdown_gracefully() -> None:
from clive.__private.ui.app import Clive
await Clive.app_instance().action_quit()
asyncio.get_event_loop().stop()
def _handle_close_signals_in_tui() -> None:
loop = asyncio.get_event_loop()
for signal_number in [signal.SIGHUP, signal.SIGINT, signal.SIGQUIT, signal.SIGTERM]:
loop.add_signal_handler(signal_number, lambda: asyncio.create_task(_shutdown_gracefully()))
async def run_tui() -> None:
from clive.__private.before_launch import prepare_before_launch
from clive.__private.ui.app import Clive
_hide_never_awaited_warnings_in_non_dev_mode()
_handle_close_signals_in_tui()
prepare_before_launch()
sys.exit(await Clive.app_instance().run_async())
Loading