mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
parent
4f74f4a4b8
commit
b9a8570039
@ -74,7 +74,7 @@ class ThreadWorker(base.Worker):
|
|||||||
# initialise the pool
|
# initialise the pool
|
||||||
self.tpool = None
|
self.tpool = None
|
||||||
self.poller = None
|
self.poller = None
|
||||||
self.shutdown_event = os.eventfd(1)
|
self.shutdown_event = os.eventfd(0)
|
||||||
self._lock = None
|
self._lock = None
|
||||||
self.futures = deque()
|
self.futures = deque()
|
||||||
self._keep = deque()
|
self._keep = deque()
|
||||||
@ -100,7 +100,7 @@ class ThreadWorker(base.Worker):
|
|||||||
|
|
||||||
def handle_exit(self, sig, frame):
|
def handle_exit(self, sig, frame):
|
||||||
self.alive = False
|
self.alive = False
|
||||||
os.eventfd_write(self.shutdown_event, 0)
|
os.eventfd_write(self.shutdown_event, 1)
|
||||||
|
|
||||||
def handle_quit(self, sig, frame):
|
def handle_quit(self, sig, frame):
|
||||||
self.alive = False
|
self.alive = False
|
||||||
@ -154,6 +154,10 @@ class ThreadWorker(base.Worker):
|
|||||||
# submit the connection to a worker
|
# submit the connection to a worker
|
||||||
self.enqueue_req(conn)
|
self.enqueue_req(conn)
|
||||||
|
|
||||||
|
def on_shutdown_event(self, *args):
|
||||||
|
# Drain any readable input to avoid getting polled again
|
||||||
|
_ = os.eventfd_read(self.shutdown_event)
|
||||||
|
|
||||||
def murder_keepalived(self):
|
def murder_keepalived(self):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
while True:
|
while True:
|
||||||
@ -207,7 +211,7 @@ class ThreadWorker(base.Worker):
|
|||||||
self.poller.register(sock, selectors.EVENT_READ, acceptor)
|
self.poller.register(sock, selectors.EVENT_READ, acceptor)
|
||||||
|
|
||||||
# This is just used to wake up the poller, nothing else needs to be done.
|
# This is just used to wake up the poller, nothing else needs to be done.
|
||||||
self.poller.register(self.shutdown_event, selectors.EVENT_READ, lambda *args: None)
|
self.poller.register(self.shutdown_event, selectors.EVENT_READ, self.on_shutdown_event)
|
||||||
|
|
||||||
while self.alive:
|
while self.alive:
|
||||||
# notify the arbiter we are alive
|
# notify the arbiter we are alive
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user