Connection hangs/does not timeout after 350 seconds.
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- python
- Lĩnh vực
- backend, networking
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện yêu cầu HTTP/2 của AsyncClient thông qua AWS VPC NAT gateway, sử dụng các chi tiết về timeout và healthcheck định kỳ trong báo cáo. Điều tra cách kết nối xử lý RST của NAT gateway sau 350 giây; được xem là hoàn thành khi hành vi này được xử lý bằng cách timeout tại thời điểm thích hợp hoặc duy trì kết nối bằng lưu lượng keepalive.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Originally opened by
@mittalsuraj18on 2023-12-04 06:24:56 in encode/httpx
Discussed in https://github.com/encode/httpx/discussions/2968
Originally posted by mittalsuraj18 December 1, 2023
When an application is running on an AWS VPC and using NAT gateway to communicate, there is a specific behavior in NAT gateway which is described here https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-troubleshooting.html as such
Internet connection drops after 350 seconds
Problem
Your instances can access the internet, but the connection drops after 350 seconds.
Cause
If a connection that's using a NAT gateway is idle for 350 seconds or more, the connection times out.
When a connection times out, a NAT gateway returns an RST packet to any resources behind the NAT gateway that attempt to continue the connection (it does not send a FIN packet).
Solution
To prevent the connection from being dropped, you can initiate more traffic over the connection. Alternatively, you can enable TCP keepalive on the instance with a value less than 350 seconds.
For example, if i have a single connection. and do something like,
client = AsyncClient(base_url=BASE_URL, http2=True)
_ = await client.get("/", timeout=1200)
The connection does not respond to RST packet. And times out after 1200 seconds instead of 350 seconds.
The behavior should have been either of the following
- Timeout at 350 seconds
- Periodically send keepalive packet to make sure NAT gateway does not timeout.
How i currently have solved it is by doing a periodic call every 60 seconds, which just calls a healtcheck endpoint of the same baseurl, to use the same connection.
- Ngôn ngữ chính
- Python
- Star
- 1.6k
- Fork
- 103
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 25
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của pydantic/httpx2
-
Please revert aiter_bytes signature to AsyncIteratorCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
pydantic/httpx2#1158 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Export AutoBackendCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
pydantic/httpx2#1131 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Mention header name error message for invalid header encodingsCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
pydantic/httpx2#864 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Support DigestAuth with "x-www-authenticate" in first response headerCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của pydantic/httpx2
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
OCA/account-invoicing#2529 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/ci
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster textĐang mởbug imagen skills
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Email validation accepts a trailing newlineCó thể đã có người làm @marcello-pichini đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày