Skip to content

Commit 874bf9a

Browse files
committed
October 2021 report
1 parent 1662242 commit 874bf9a

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

reports/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ title: "Monthly Reports"
77

88
## 2021
99

10+
* [October 2021](october-2021)
1011
* [September 2021](september-2021)
1112
* [August 2021](august-2021)
1213
* [July 2021](july-2021)

reports/october-2021.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
layout: reports
3+
title: "October 2021"
4+
---
5+
6+
### HTTPCore
7+
8+
My most focused work this month has been on reworking the `httpcore` package. I've been spending a good chunk of time in documenting this redesign, and focusing on trying to provide an HTTP package that is tightly scoped in only providing the absolute core HTTP networking functionality, while still being a useful tool in it's own right.
9+
10+
### Hidden complexities
11+
12+
Handling connection pooling for both HTTP/1.1 and HTTP/2 connections is actually pretty tricky to get right. There aren't any other Python packages that handle this, and it has a number of awkward corner cases.
13+
14+
For example:
15+
16+
* When opening a connection we can't know upfront if it will end up being HTTP/1.1 or HTTP/2. We don't want to unnecessarily initiate new connections to the server if a single HTTP/2 connection will be sufficient, so when we have a connection that is still being established we need to queue incoming requests onto that connection, and retry them if it ends up being an HTTP/1.1 connection.
17+
* A long-lived HTTP/2 connection can eventually exhaust the stream ID space. We can't know at the point of queueing a request onto a connection if this will occur, and need to retry the request on a new HTTP/2 connection if this condition does occur.
18+
19+
Being able to devote full-time focused work to redesigning `httpcore` is the kind of work that very likely might not be viable without a funded open-source model.
20+
21+
### Roadmap
22+
23+
The work on `httpcore` has been a substantial redesign. One a new release is made, we'll need a corresponding new release of HTTPX, which is backed by this new work.
24+
25+
Once that's done, it'd probably make sense for my to spend some time working on an `httpcore` based adapter for `requests`. This would be interesting as it would have the potential to bring HTTP/2 support either to `requests`, or perhaps to the widely-used `httpie` command-line tool.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy