-
Notifications
You must be signed in to change notification settings - Fork 6.7k
chore(deps): update dependency gunicorn to v25 #13773
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
chore(deps): update dependency gunicorn to v25 #13773
Conversation
Summary of ChangesHello @renovate-bot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request performs a significant upgrade of the Gunicorn web server dependency from version 23.0.0 to 25.0.0 across various Python application configurations. This update integrates several major new features, such as 'Dirty Arbiters' for efficient handling of intensive tasks, beta support for HTTP/2, and enhanced ASGI capabilities. It also includes important security patches, numerous bug fixes, and the deprecation of the 'eventlet' worker, ensuring the applications benefit from the latest performance, stability, and security improvements offered by Gunicorn. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request updates the gunicorn dependency from version 23.0.0 to 25.0.0 across numerous requirements.txt files. This is a significant update, and my review focused on the compatibility implications, particularly concerning Python versions, as gunicorn v25 requires Python 3.8 or newer. I've identified a couple of areas where the Python version specifications in the requirements files are inconsistent with this new requirement. I've provided specific suggestions to address these inconsistencies, which should improve the correctness of the dependency files and prevent potential installation problems. Otherwise, the dependency update is straightforward.
| gunicorn==25.0.0; python_version > '3.0' | ||
| gunicorn==25.0.0; python_version < '3.0' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gunicorn v25 requires Python 3.8+. The python_version < '3.0' marker is for Python 2 and will cause installation to fail. The python_version > '3.0' marker is also inaccurate as it includes unsupported Python 3 versions. Since other dependencies in this file imply support for Python 3.8+, these two lines can be simplified to a single one.
gunicorn==25.0.0
| Werkzeug==3.0.3; python_version > '3.6' | ||
| Werkzeug==2.3.8; python_version < '3.7' | ||
| gunicorn==23.0.0 | ||
| gunicorn==25.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The update to gunicorn==25.0.0 raises the required Python version to 3.8+. However, gunicorn lacks a Python version marker, while other dependencies in this file are pinned for older Python versions (e.g., < '3.7'). This will cause installation failures on unsupported Python versions. To prevent this, a version marker should be added.
gunicorn==25.0.0; python_version >= '3.8'
This PR contains the following updates:
==23.0.0→==25.0.0Release Notes
benoitc/gunicorn (gunicorn)
v25.0.0: Gunicorn 25.0.0Compare Source
New Features
Dirty Arbiters: Separate process pool for executing long-running, blocking
operations (AI model loading, heavy computation) without blocking HTTP workers
(PR #3460)
--dirty-app,--dirty-workers,--dirty-timeout,--dirty-threads,--dirty-graceful-timeouton_dirty_starting,dirty_post_fork,dirty_worker_init,dirty_worker_exitPer-App Worker Allocation for Dirty Arbiters: Control how many dirty workers
load each app for memory optimization with heavy models
(PR #3473)
workersclass attribute on DirtyApp (e.g.,workers = 2)module:class:N(e.g.,myapp:HeavyModel:2)DirtyNoWorkersAvailableErrorfor graceful error handlingworkers=2: 20GB (75% savings)HTTP/2 Support (Beta): Native HTTP/2 (RFC 7540) support for improved performance
with modern clients (PR #3468)
--http-protocols,--http2-max-concurrent-streams,--http2-initial-window-size,--http2-max-frame-size,--http2-max-header-list-sizepip install gunicorn[http2]examples/http2_gevent/with Docker and testsHTTP 103 Early Hints: Support for RFC 8297 Early Hints to enable browsers to
preload resources before the final response
(PR #3468)
environ['wsgi.early_hints'](headers)callbackhttp.response.informationalmessage typeuWSGI Protocol for ASGI Worker: The ASGI worker now supports receiving requests
via the uWSGI binary protocol from nginx
(PR #3467)
Bug Fixes
Fix HTTP/2 ALPN negotiation for gevent and eventlet workers when
do_handshake_on_connectis False (the default). The TLS handshake is nowexplicitly performed before checking
selected_alpn_protocol().Fix setproctitle initialization with systemd socket activation
(#3465)
Fix
Expect: 100-continuehandling: ignore the header for HTTP/1.0 requestssince 100-continue is only valid for HTTP/1.1+
(PR #3463)
Fix missing
_expected_100_continueattribute in UWSGIRequestDisable setproctitle on macOS to prevent segfaults during process title updates
Publish full exception traceback when the application fails to load
(#3462)
Fix ASGI: quick shutdown on SIGINT/SIGQUIT, graceful on SIGTERM
Deprecations
eventletworker is deprecated and will be removed inGunicorn 26.0. Eventlet itself is no longer actively maintained.
Please migrate to
gevent,gthread, or another supported worker type.Changes
(PR #3471)
v24.1.1Compare Source
Bug Fixes
forwarded_allow_ipsandproxy_allow_ipsto remain as strings for backwardcompatibility with external tools like uvicorn. Network validation now uses strict
mode to detect invalid CIDR notation (e.g.,
192.168.1.1/24where host bits are set)(#3458,
PR #3459)
Full Changelog: benoitc/gunicorn@24.1.0...24.1.1
v24.1.0: Gunicorn 24.1.0Compare Source
New Features
Official Docker Image: Gunicorn now publishes official Docker images to GitHub Container Registry (PR #3454)
ghcr.io/benoitc/gunicornPROXY Protocol v2 Support: Extended PROXY protocol implementation to support the binary v2 format in addition to the existing text-based v1 format (PR #3451)
--proxy-protocolmodes:off,v1,v2,autoautomode (default when enabled) detects v1 or v2 automaticallyCIDR Network Support:
--forwarded-allow-ipsand--proxy-allow-fromnow accept CIDR notation (e.g.,192.168.0.0/16) for specifying trusted networks (PR #3449)Socket Backlog Metric: New
gunicorn.socket.backloggauge metric reports the current socket backlog size on Linux systems (PR #3450)InotifyReloader Enhancement: The inotify-based reloader now watches newly imported modules, not just those loaded at startup (PR #3447)
Bug Fixes
finish_body()for faster timeout detection on slow or abandoned connections (PR #3453)SSLWantReadErrorinfinish_body()to prevent worker hangs during SSL renegotiation (PR #3448)unreader.unread()to prepend data to buffer instead of appending (PR #3442)RecursionErrorwhen pickling Config objects (PR #3441)raise fromin glogging.py (PR #3440)Installation
Or use the official Docker image:
v24.0.0Compare Source
New Features
ASGI Worker (Beta): Native asyncio-based ASGI support for running async Python frameworks like FastAPI, Starlette, and Quart without external dependencies
uWSGI Binary Protocol: Support for receiving requests from nginx via
uwsgi_passdirectiveDocumentation Migration: Migrated to MkDocs with Material theme
Security
Install
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Never, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.