Skip to content
This repository was archived by the owner on Mar 26, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion hatchet_sdk/worker/action_listener_process.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import os
import asyncio
import logging
import signal
Expand Down Expand Up @@ -73,8 +74,11 @@ def __post_init__(self):
loop = asyncio.get_event_loop()
loop.add_signal_handler(signal.SIGINT, noop_handler)
loop.add_signal_handler(signal.SIGTERM, noop_handler)

sig_force_quit = "SIGBREAK" if os.name == "nt" else "SIGQUIT" # Windows doesn't have SIGQUIT
sig_force_quit_signal = getattr(signal, sig_force_quit, None)
loop.add_signal_handler(
signal.SIGQUIT, lambda: asyncio.create_task(self.exit_gracefully())
sig_force_quit_signal, lambda: asyncio.create_task(self.exit_gracefully())
)

async def start(self, retry_attempt=0):
Expand Down
5 changes: 4 additions & 1 deletion hatchet_sdk/worker/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,10 @@ async def _check_listener_health(self) -> None:
def _setup_signal_handlers(self) -> None:
signal.signal(signal.SIGTERM, self._handle_exit_signal)
signal.signal(signal.SIGINT, self._handle_exit_signal)
signal.signal(signal.SIGQUIT, self._handle_force_quit_signal)

sig_force_quit = "SIGBREAK" if os.name == "nt" else "SIGQUIT" # Windows doesn't have SIGQUIT
sig_force_quit_signal = getattr(signal, sig_force_quit, None)
signal.signal(sig_force_quit_signal, self._handle_force_quit_signal)

def _handle_exit_signal(self, signum: int, frame: FrameType | None) -> None:
sig_name = "SIGTERM" if signum == signal.SIGTERM else "SIGINT"
Expand Down