Fix eventlet patching and bump required version

Fix eventlet patching by performing the patching before the
`init_process` method, which does not return, is called.

This fix depends on bumping the required version to 0.24.1, which
contains a fix for the monotonic clock. See the relevant commit:
eventlet/eventlet@82f1877

This commit reverts 120f503f68929ef98d721a406745a1dbbb9d83fe

Fix #1847
Fix #1884
This commit is contained in:
Randall Leeds 2019-05-08 19:23:13 -07:00
parent ad941bdff4
commit a542a07773
2 changed files with 5 additions and 5 deletions

View File

@ -630,7 +630,7 @@ class WorkerClass(Setting):
A string referring to one of the following bundled classes: A string referring to one of the following bundled classes:
* ``sync`` * ``sync``
* ``eventlet`` - Requires eventlet >= 0.24 (or install it via * ``eventlet`` - Requires eventlet >= 0.24.1 (or install it via
``pip install gunicorn[eventlet]``) ``pip install gunicorn[eventlet]``)
* ``gevent`` - Requires gevent >= 1.4 (or install it via * ``gevent`` - Requires gevent >= 1.4 (or install it via
``pip install gunicorn[gevent]``) ``pip install gunicorn[gevent]``)

View File

@ -11,11 +11,11 @@ import sys
try: try:
import eventlet import eventlet
except ImportError: except ImportError:
raise RuntimeError("eventlet worker requires eventlet 0.24 or higher") raise RuntimeError("eventlet worker requires eventlet 0.24.1 or higher")
else: else:
from pkg_resources import parse_version from pkg_resources import parse_version
if parse_version(eventlet.__version__) < parse_version('0.24'): if parse_version(eventlet.__version__) < parse_version('0.24.1'):
raise RuntimeError("eventlet worker requires eventlet 0.24 or higher") raise RuntimeError("eventlet worker requires eventlet 0.24.1 or higher")
from eventlet import hubs, greenthread from eventlet import hubs, greenthread
from eventlet.greenio import GreenSocket from eventlet.greenio import GreenSocket
@ -95,8 +95,8 @@ class EventletWorker(AsyncWorker):
return super().is_already_handled(respiter) return super().is_already_handled(respiter)
def init_process(self): def init_process(self):
super().init_process()
self.patch() self.patch()
super().init_process()
def handle_quit(self, sig, frame): def handle_quit(self, sig, frame):
eventlet.spawn(super().handle_quit, sig, frame) eventlet.spawn(super().handle_quit, sig, frame)