mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-14 05:49:57 +00:00
python3-gunicorn: add patch work with geventlet
python3-gunicorn depends on python3-geventlet. geventlet has made some breaking changes (which is part of meta-oe/kirkstone), however gunicorn wasn't adapted to this, and it broke some features (at least ptests). This patch backports the change that adapts gunicorn to the used version of geventlet. Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
From 6a8ebb4844b2f28596ffe7421eb9f7d08c8dc4d8 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Shepelev <temotor@gmail.com>
|
||||
Date: Thu, 6 May 2021 12:54:06 +0300
|
||||
Subject: [PATCH] eventlet worker: ALREADY_HANDLED -> WSGI_LOCAL
|
||||
|
||||
Eventlet v0.30.3+ removed wsgi.ALREADY_HANDLED in favor of
|
||||
`wsgi.WSGI_LOCAL.already_handled: bool`
|
||||
|
||||
Sorry, this breaking change happened during only patch
|
||||
version increase 0.30.2 -> 0.30.3
|
||||
|
||||
https://github.com/eventlet/eventlet/issues/543
|
||||
https://github.com/eventlet/eventlet/pull/544
|
||||
|
||||
Upstream-Status: Backport [https://github.com/benoitc/gunicorn/commit/6a8ebb4844b2f28596ffe7421eb9f7d08c8dc4d8]
|
||||
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
|
||||
|
||||
---
|
||||
gunicorn/workers/geventlet.py | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gunicorn/workers/geventlet.py b/gunicorn/workers/geventlet.py
|
||||
index ffdb206c0..ea82f3d62 100644
|
||||
--- a/gunicorn/workers/geventlet.py
|
||||
+++ b/gunicorn/workers/geventlet.py
|
||||
@@ -17,11 +17,16 @@
|
||||
|
||||
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 @@ def patch(self):
|
||||
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)
|
||||
Reference in New Issue
Block a user