From 0b62fbc0de8ea118d4f68a7061b3bf57196cf8c2 Mon Sep 17 00:00:00 2001 From: marwin Date: Fri, 28 Aug 2026 08:34:27 +0000 Subject: [PATCH] =?UTF-8?q?Hotfix:=20gunicorn/packaging=20pinnen=20?= =?UTF-8?q?=E2=80=94=20gevent-Worker=20startete=20nicht=20mehr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der erste Rebuild seit dem 17.08. zog gunicorn 26.2.0, dessen ggevent.py packaging.version importiert, während das Paket selbst überhaupt keine Dependencies deklariert ("Requires:" ist leer). Damit fehlte packaging im Image und gunicorn brach beim Start ab: Error: class uri 'gevent' invalid or not found ModuleNotFoundError: No module named 'packaging' Beides wandert nach requirements.txt, und das Dockerfile installiert gunicorn nicht mehr ungepinnt nebenher — sonst kann der nächste Rebuild den Worker wieder unter uns austauschen. Co-Authored-By: Claude Opus 5 --- Dockerfile | 2 +- requirements.txt | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fa1b4f0..a19240d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt gunicorn +RUN pip install --no-cache-dir -r requirements.txt ARG BUILD_TIME ENV BUILD_TIME=${BUILD_TIME} diff --git a/requirements.txt b/requirements.txt index 38524e9..5841df5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,9 @@ python-dotenv>=1.0 whitenoise>=6.6 feedparser>=6.0 gevent>=24.0 +# Pinned: 26.2.0 ships ggevent.py importing packaging.version while declaring +# no dependencies at all, so the gevent worker dies at boot unless packaging is +# installed explicitly. Both stay pinned here rather than being pulled in bare +# by the Dockerfile, so a rebuild cannot silently change the worker again. +gunicorn==26.2.0 +packaging>=24.0