client/updater design: parallel downloads
Maintainer thường phản hồi trong vòng 10 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- backend-api-design, security
Hướng nghiên cứu
Đọc các entry point hiện có Updater.refresh(), Updater.get_valid_targetinfos(list) và Updater.download_targets(list), sau đó xem xét ngữ cảnh tải xuống song song của pip được mô tả trong issue. Xác định một phạm vi cụ thể cho API hoặc tính đồng thời, trong đó công việc được xem là hoàn tất khi targets và metadata bin có thể được tải xuống song song mà không làm trạng thái Updater dùng chung trở nên không an toàn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Updater should in some way support parallel downloads.
This came up because I found an obscure corner in pip that does index file downloads in parallel in pip (pip list --outdated): if I plug my TUF-support in there, TUF Updater gets called from multiple threads and very bad things happen.
Some notes on this:
- for the pip use case, letting pip handle the actual downloads would remove 50% of the need for this -- but bin metadata downloads would still be sequential (and
Updater.refresh()would still be thread-unsafe) - Still, parallel downloads (for both targets and bin metadata) is probably a wanted feature in other user-facing apps as well: it is faster and is something package managers already often do
- this feature does not mean that TUF API absolutely needs to be threadsafe: many use cases would be covered by small API change:
Updater.get_valid_targetinfos(list)andUpdater.download_targets(list)could still be a single-threaded API but they could be implemented in a way that uses multiple threads and multiple connections to the server. I have no idea how easy this would be though. - The nicest solution might be a low-level Sans-IO style API (a state machine with events) or at least something that is asynchronous to the users. This API is then wrapped by a simple I/O layer that could look much like it now does. This would mean a large change.
- Ngôn ngữ chính
- Python
- Star
- 1.7k
- Fork
- 304
- Merge trung bình
- 9 giờ 25 phút
- Pull request đã merge (30 ngày)
- 14
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 theupdateframework/python-tuf
-
switch to main branch?Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
theupdateframework/python-tuf#3001 ·
Maintainer thường phản hồi trong vòng 10 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
theupdateframework/python-tuf#2979 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 10 ngày
-
Use Immutable ReleasesĐang mởenhancement github_actions
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
theupdateframework/python-tuf#2920 · 1 bình luận · 2 reaction ·
Maintainer thường phản hồi trong vòng 10 ngày
-
Investigate/test fetcher retriesĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
theupdateframework/python-tuf#2842 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 10 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
theupdateframework/python-tuf#2836 · 7 bình luận ·
Maintainer thường phản hồi trong vòng 10 ngày
Tất cả issue của theupdateframework/python-tuf
Issue tương tự
-
pydanty:is-working
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
pydantic/pydantic-ai#8843 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
breaking change enhancement server
Độ 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
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
sktime/sktime#11310 · 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 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày