mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Fixes signal reaction times.
After messing around trying to make this more elegant we've decided to just slap a 1s poll to the thing which seems to fix various bugs in the async event handling.
This commit is contained in:
parent
3ef8688fcc
commit
07f0c0f21d
@ -7,8 +7,6 @@ from __future__ import with_statement
|
|||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import eventlet
|
import eventlet
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@ -40,17 +38,13 @@ class EventletWorker(AsyncWorker):
|
|||||||
self.acceptor = eventlet.spawn(eventlet.serve, self.socket,
|
self.acceptor = eventlet.spawn(eventlet.serve, self.socket,
|
||||||
self.handle, self.worker_connections)
|
self.handle, self.worker_connections)
|
||||||
|
|
||||||
t = time.time()
|
|
||||||
while self.alive:
|
while self.alive:
|
||||||
if time.time() >= t:
|
self.notify()
|
||||||
self.notify()
|
|
||||||
t = time.time() + self.timeout
|
|
||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s" % self)
|
||||||
break
|
break
|
||||||
|
|
||||||
eventlet.sleep(0.1)
|
eventlet.sleep(1.0)
|
||||||
|
|
||||||
self.notify()
|
self.notify()
|
||||||
with eventlet.Timeout(self.timeout, False):
|
with eventlet.Timeout(self.timeout, False):
|
||||||
|
|||||||
@ -7,7 +7,6 @@ from __future__ import with_statement
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
|
||||||
|
|
||||||
# workaround on osx, disable kqueue
|
# workaround on osx, disable kqueue
|
||||||
if sys.platform == "darwin":
|
if sys.platform == "darwin":
|
||||||
@ -73,18 +72,14 @@ class GeventWorker(AsyncWorker):
|
|||||||
worker=self)
|
worker=self)
|
||||||
|
|
||||||
server.start()
|
server.start()
|
||||||
t = time.time()
|
|
||||||
try:
|
try:
|
||||||
while self.alive:
|
while self.alive:
|
||||||
|
self.notify()
|
||||||
if time.time() >= t:
|
|
||||||
self.notify()
|
|
||||||
t = time.time() + self.timeout
|
|
||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s" % self)
|
||||||
break
|
break
|
||||||
gevent.sleep(0.1)
|
|
||||||
|
gevent.sleep(1.0)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
@ -138,20 +133,15 @@ class GeventBaseWorker(Worker):
|
|||||||
server = self.server_class(self.socket, application=self.wsgi,
|
server = self.server_class(self.socket, application=self.wsgi,
|
||||||
spawn=pool, handler_class=self.wsgi_handler)
|
spawn=pool, handler_class=self.wsgi_handler)
|
||||||
server.start()
|
server.start()
|
||||||
|
|
||||||
t = time.time()
|
|
||||||
try:
|
try:
|
||||||
while self.alive:
|
while self.alive:
|
||||||
if time.time() >= t:
|
self.notify()
|
||||||
self.notify()
|
|
||||||
t = time.time() + self.timeout
|
|
||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s" % self)
|
||||||
break
|
break
|
||||||
|
|
||||||
# sleep
|
gevent.sleep(1.0)
|
||||||
gevent.sleep(0.1)
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user