Skip to content

Commit 1299ea9

Browse files
authored
Merge pull request benoitc#2581 from temoto/patch-1
eventlet worker: ALREADY_HANDLED -> WSGI_LOCAL
2 parents cf55d2c + 6a8ebb4 commit 1299ea9

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

gunicorn/workers/geventlet.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,16 @@
1717

1818
from eventlet import hubs, greenthread
1919
from eventlet.greenio import GreenSocket
20-
from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED
20+
import eventlet.wsgi
2121
import greenlet
2222

2323
from gunicorn.workers.base_async import AsyncWorker
2424

25+
# ALREADY_HANDLED is removed in 0.30.3+ now it's `WSGI_LOCAL.already_handled: bool`
26+
# https://github.com/eventlet/eventlet/pull/544
27+
EVENTLET_WSGI_LOCAL = getattr(eventlet.wsgi, "WSGI_LOCAL", None)
28+
EVENTLET_ALREADY_HANDLED = getattr(eventlet.wsgi, "ALREADY_HANDLED", None)
29+
2530

2631
def _eventlet_socket_sendfile(self, file, offset=0, count=None):
2732
# Based on the implementation in gevent which in turn is slightly
@@ -125,6 +130,10 @@ def patch(self):
125130
patch_sendfile()
126131

127132
def is_already_handled(self, respiter):
133+
# eventlet >= 0.30.3
134+
if getattr(EVENTLET_WSGI_LOCAL, "already_handled", None):
135+
raise StopIteration()
136+
# eventlet < 0.30.3
128137
if respiter == EVENTLET_ALREADY_HANDLED:
129138
raise StopIteration()
130139
return super().is_already_handled(respiter)

0 commit comments

Comments
 (0)