mesahm
regards,
Show HN: We made a full-featured Python HTTP client work inside WASI
Show HN: I built a PC-part picker that handles compatibility and shortages
regards,
regards,
Show HN: Niquests – A Requests fork, three years of catching Python's HTTP up
I am the original author of "rtls". For years now, the Python experts are arguing about OpenSSL mandatory aspect in the distribution, and many other went into compiling CPython themselves against LibreSSL, or AWS-LC, (...)
I wanted the broader community to be able to just "run an alternative ssl backend" without effort.
The main goal is for anyone running a mere high level http client to be able to leverage a memory-safe TLS backend.
Behind the scene it's Rustls, with aws-lc-rs engine.
I'm also the author of Niquests http client, a drop in replacement for Requests. https://github.com/jawah/niquests and yes rtls is supported transparently with it.
Show HN: A drop-in replacement and memory-safe TLS back end for Python
more seriously, all that is needed is our collective effort. I've done my part by scarifying a lot of personal time for it.
fwiw, HTTP/2 is twelve years old, just saying.
I am trying to resolve what you've seen. For years of hard work.
I'm the maintainer of Niquests.
For years, Python's Requests library was the gold standard, but it has been under feature freeze. As the web moved on, the Python ecosystem fractured: we got aiohttp (async only) and httpx (great, but currently struggles in high throughput scenarii for years with no visible solution merged so far).
I wanted the beautiful, ergonomic API of requests, but I wanted it to speak the modern web and solve most seen struggles around HTTP consumption. So I built Niquests as a drop-in replacement, you can literally do import niquests as requests. I didn't want to reinvent the wheel, I wanted to start on solid ground. Requests and urllib3 are both rock solid, so this was the starting point, learning from them and extend them for the modern web.
Under the hood, it's a different beast. I've added:
* HTTP/2 & HTTP/3 over QUIC out of the box * Multiplexing and full thread/task safety (fixed the old concurrency bottlenecks over thousands of TCP connections) * OS trust store support by default (no more certifi issues) * Both sync and async support (in one library) * Deep DNS control (DoH, DoQ, DoT, DNSSEC), "Happy Eyeballs" for fast connects * Integrated WebSocket extension over HTTP/1, HTTP/2, and HTTP/3 * Works in WASM (Pyodide), and compatible with ASGI/WSGI apps * And much more(...)
Here’s a real-world benchmark: Niquests completes a 1000-request multiplexed workload in 0.55s, compared to httpx (2.08s) and aiohttp (1.35s). See https://gist.github.com/Ousret/9e99b07e66eec48ccea5811775ec1... to verify yourself. And yes it does scale as long as your server can take it.
I've worked hard to make this the most advanced Python HTTP client. without losing the simplicity and readability we love from requests.
Would love feedback, technical questions (especially around HTTP/2+ and multiplexing!), or discussion about the state of Python HTTP clients.
Show HN: I forked Python's Requests to add HTTP/3, async, and multiplexing
I'm the maintainer of Niquests. It is a drop-in replacement for the Python requests library that focuses on bringing modern HTTP features to the familiar API we all know.
I started this because requests is effectively feature-frozen, but I really missed having support for newer standards like HTTP/2 and HTTP/3 without switching to a completely different tool. Not only due to Requests current state but, as some of you may be aware, httpx is in a tough situation too, risking to take the same path forward as Requests did(...)
Some of the main differences from the original library:
Modern Protocols: It supports HTTP/2 and HTTP/3 over QUIC by default with a true multiplexing support.
Async Support: You can use it synchronously just like requests, or asynchronously with await.
Security: It uses your system's OS truststore (no more bundled certs) and supports OCSP revocation checks and DNSSEC.
Performance: In our benchmarks, our multiplexing scheduler offer significant speed improvements over requests, httpx, and even aiohttp.
The goal is to let you upgrade your network stack just by changing your import to "import niquests as requests".I'd love to hear your feedback or answer any questions about the implementation!
Show HN: Safest, Fastest, Easiest, and Most Advanced Python HTTP Client
Bringing uv-like performance leaps to Python HTTP
We (a team of 3 based in France) built this page because we were frustrated by how hard it is to own your identity online without any related knowledge.
We recently launched a tool (Happymail) to solve this, but this post is more about the philosophy of why we think the 'firstname.lastname' era is dying and why we should fix it.
Happy to answer questions, Regards