NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1128 most downloaded on PyPI
HTTP client library for gevent
Last release 5 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 5 months
Most releases are documented
notes for 31 of 39 stable releases
7 versions withdrawn
withdrawn after publishing
14 years old
48 releases · first in 2012
Fix a performance regression introduced in 2.4.0: requests with body=None (e.g. every UserAgent.urlopen() GET without a payload) were sent with Transf
body=None (e.g. every UserAgent.urlopen() GET without a payload) were sent with Transfer-Encoding: chunked, and the terminating 0\r\n\r\n was written with a separate sendall(). On keep-alive connections Nagle's algorithm held the small second write until the server's delayed ACK (~40 ms per request), dropping locust FastHttpUser benchmarks by about 10x. body=None is now treated as "no body" (#248)sendall(), avoiding the same Nagle stallAs announced with 2.4.0, this release requires Python 3.11 or later . SSL support is now mandatory: the package no longer contains fallbacks for envir
As announced with 2.4.0, this release requires Python 3.11 or later. SSL support is now mandatory: the package no longer contains fallbacks for environments without the ssl module.
http.clientNameError on Python <= 3.13 when importing geventhttpclient.url (URL self-reference in the redirect signature)body parameter of HTTPClient.delete() and trace() againHTTPResponse.read() and readline() return bytes instead of bytearrayreadline() on a released response raises HTTPConnectionClosedurllib3 is no longer a runtime dependency; multipart/form-data bodies are rendered internally (it remains available via the benchmarks extra)url, header, response, connectionpool, client), checked with mypy in strict mode via pre-commit and CINON_GEVENT=1) with a dedicated CI job, so the test suite runs with and without gevent monkey patching (#241)One column per quarter.
Update the vendored llhttp parser from v6.0.11 to v9.4.3, including the fix for CVE-2024-27982 (HTTP request smuggling via content-length obfuscation)…
This is the last release with Python 3.9 support. The next release will require Python 3.11 or later.
Transfer-Encoding: chunked header is set, and use it automatically for bodies of unknown length (iterators, file-like objects without fileno) (#158)proxy_user and proxy_password parameters (#184)Expect: 100-continue support: the body is sent only after an interim 100 Continue response, and final rejection responses (e.g. 401/403) are returned without sending the body (#26)Content-Length alongside Transfer-Encoding: chunkedInvalid status codeUse select() for socket validation with stdlib SSL support by @devamsheth21 in #240
Full Changelog: 2.3.8...2.3.9
feat: Add connection validation to prevent stale connection reuse by @devamsheth21 in #238
Full Changelog: 2.3.7...2.3.8
Update GitHub action versions, build using Python 3.14, update cibuildwheel to 3.3.0 by @cyberw in #237
Full Changelog: 2.3.6...2.3.7
Explicitly support python 3.13 and 3.14 and build using 3.13 by @cyberw in #236
Full Changelog: 2.3.5...2.3.6
Fix Headers.extend by @ml31415 in #231
test: Increase the read of the TLS handshake in sni_checker_server() by @sebastianas in #228
Full Changelog: 2.3.3...2.3.4
Fixed github action publishing issue
Full Changelog: 2.3.1...2.3.3
Nothing published for this version
Fix locust backwards compatibility by @ml31415 in #218
Clean up readme and example code by @ml31415 in #212
Full Changelog: 2.2.1...2.3.0
URL refactoring by @ml31415 in #206
Fixes http.client patching by @ml31415 in https://github.com/geventhttpclient/geventhttpclient/pull/200
(hopefully also fixes the missing windows binary builds in 2.1.1 as a side effect of rebuilding)
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.1.1...2.2.0
Reduce httpbin dependency by @ml31415 in https://github.com/geventhttpclient/geventhttpclient/pull/199
(this replaces 2.1.0, where the publishing went wrong)
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.1.0...2.1.1
Spring cleaning (mostly test updates) by @ml31415 in https://github.com/geventhttpclient/geventhttpclient/pull/191
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.12...2.1.0
port examples to Python3 by @a-detiste in https://github.com/geventhttpclient/geventhttpclient/pull/185
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.11...2.0.12
Support Python 3.12 by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/182
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.10...2.0.11
Disable unit tests for no ssl module + fixes for build by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/181 (no code changes)
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.9...2.0.10
Add square brackets for Host header when using IPv6 address by @fungaren in https://github.com/geventhttpclient/geventhttpclient/pull/176
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.8...2.0.9
Prefer using create_default_ssl_context (second try, now backwards compatible) by @miedzinski in https://github.com/geventhttpclient/geventhttpclient/
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.7...2.0.8
Revert "Prefer using create_default_ssl_context" (#170) by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/174
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.6...2.0.7
This release has been yanked from pypi because of accidental breaking change!
Fix typo in MANIFEST.in
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.5...2.0.6
This release has been yanked from pypi because of accidental breaking change!
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.4...2.0.5
This release has been yanked from pypi because of an accidental breaking change!
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.3...2.0.4
fix: import distutils after setuptools (compat with setuptools/65.3.0) by @sandrotosi in https://github.com/geventhttpclient/geventhttpclient/pull/168
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.2...2.0.3
Urlencode spaces in query string, like requests does by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/166
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.1...2.0.2
Always URLencode data parameter if it is dict type by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/165
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/2.0.0...2.0.1
Nothing published for this version
Nothing published for this version
Dont pass unknown keyword arguments to _make_request by @cyberw in https://github.com/geventhttpclient/geventhttpclient/pull/160
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/1.5.4...1.5.5
Use SPDX identifier and Python packaging standard license location by @ccorbacho in https://github.com/geventhttpclient/geventhttpclient/pull/155
Full Changelog: https://github.com/geventhttpclient/geventhttpclient/compare/1.5.3...1.5.4
Add support (and pre-built wheels) for Python 3.10
Add support (and pre-built wheels) for Python 3.10
Adds wheels for Linux aarch64/ARM
Adds wheels for Linux aarch64/ARM
Nothing published for this version
Don't auto parse query string. Add params keyword argument (#134, this change introduces a tiny breaking change for (unescaped) spaces in URLs sometim…
Don't auto parse query string. Add params keyword argument (#134, this change introduces a tiny breaking change for (unescaped) spaces in URLs sometimes not automatically being converted into %20) Add support for brotli encoded response content (#146) Build wheels with Github Actions instead of travis-ci + appveyor, wheels for Apple Silicon (but not yet linux ARM)
Don't auto parse query string. Add params keyword argument.
Don't auto parse query string. Add params keyword argument.
Add kwargs to exception objects representation
Add kwargs to exception objects representation (https://github.com/locustio/locust/issues/1460)
Fix Unhandled UnicodeDecodeError exception if response with status 400 and request contains binary payload (locustio/locust#1447)
Fix Unhandled UnicodeDecodeError exception if response with status 400 and request contains binary payload (locustio/locust#1447)
attempt to fix deployment to pypi
attempt to fix deployment to pypi
add wheels for linux, macos & windows
add wheels for linux, macos & windows
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →