Zło To<p>State of client side HTTP in <a href="https://101010.pl/tags/python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>python</span></a></p><p>- stdlib http.client - HTTP/1.1 only, docs recommend to use requests instead.<br>- requests - poorly maintained, in 2020 stopped working when servers deprecated older TLS versions. HTTP/1.1 only, sync only<br>- <a href="https://101010.pl/tags/httpx" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>httpx</span></a> - comparatively slow and API design is driven by compatibility with browsers. Some users plug-in aiohttp for better performance. Supports HTTP/2 but it's discouraged as not optimized.<br>- <a href="https://101010.pl/tags/aiohttp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>aiohttp</span></a> - good API, both client and server but seems more focused on the server side; HTTP/1.1 only.<br>- <a href="https://101010.pl/tags/niquests" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>niquests</span></a> - async fork of requests with HTTP/2, but uses forked urllib3 with the same package name as the original, which messes up deployment.<br>- <a href="https://101010.pl/tags/aioquic" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>aioquic</span></a> - client & server, HTTP/3 only</p><p>🤦</p><p> <a href="https://101010.pl/tags/pythonRequests" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythonRequests</span></a> <a href="https://101010.pl/tags/programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>programming</span></a></p>