Skip to content

Commit

Permalink
[Fix] Server set_wakeup_fd fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Green committed Dec 9, 2024
1 parent 2db9769 commit 99f4625
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/py/extra/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from .utils.codec import BytesTransform
from .utils.limits import LimitType, unlimit
from .model import Application, Service, mount
import threading
from .http.model import (
HTTPRequest,
HTTPResponse,
Expand Down Expand Up @@ -52,6 +53,7 @@ class ServerOptions(NamedTuple):
# SEE: https://repost.aws/questions/QU-_rSWDtwSmOD5wBO5tsrwg/load-balancer-502-bad-gateway
keepalive: float = 3_600
logRequests: bool = True
stopSignals: bool = True
condition: Callable[[], bool] | None = None


Expand Down Expand Up @@ -371,9 +373,15 @@ async def Serve(

# Manage server state
state = ServerState()
# Registers handlers for signals and exception (so that we log them)
loop.add_signal_handler(SIGINT, lambda: state.stop())
loop.add_signal_handler(SIGTERM, lambda: state.stop())
# Registers handlers for signals and exception (so that we log them). Note
# that we'll get a `set_wakeup_fd only works in main thread of the main interpreter`
# when this is not run out of the main thread.
if (
options.stopSignals
and threading.current_thread() is threading.main_thread()
):
loop.add_signal_handler(SIGINT, lambda: state.stop())
loop.add_signal_handler(SIGTERM, lambda: state.stop())
loop.set_exception_handler(state.onException)

info(
Expand Down

0 comments on commit 99f4625

Please sign in to comment.