Merge pull request #2581 from temoto/patch-1

eventlet worker: ALREADY_HANDLED -> WSGI_LOCAL
This commit is contained in:
Benoit Chesneau 2021-07-02 21:50:26 +02:00 committed by GitHub
commit 1299ea9e96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,11 +17,16 @@ else:
from eventlet import hubs, greenthread
from eventlet.greenio import GreenSocket
from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED
import eventlet.wsgi
import greenlet
from gunicorn.workers.base_async import AsyncWorker
# ALREADY_HANDLED is removed in 0.30.3+ now it's `WSGI_LOCAL.already_handled: bool`
# https://github.com/eventlet/eventlet/pull/544
EVENTLET_WSGI_LOCAL = getattr(eventlet.wsgi, "WSGI_LOCAL", None)
EVENTLET_ALREADY_HANDLED = getattr(eventlet.wsgi, "ALREADY_HANDLED", None)
def _eventlet_socket_sendfile(self, file, offset=0, count=None):
# Based on the implementation in gevent which in turn is slightly
@ -125,6 +130,10 @@ class EventletWorker(AsyncWorker):
patch_sendfile()
def is_already_handled(self, respiter):
# eventlet >= 0.30.3
if getattr(EVENTLET_WSGI_LOCAL, "already_handled", None):
raise StopIteration()
# eventlet < 0.30.3
if respiter == EVENTLET_ALREADY_HANDLED:
raise StopIteration()
return super().is_already_handled(respiter)