Feature: Configuration to set maximum parallelization of :parallel runner
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
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách đọc các triển khai SSHKit của các runner :parallel và :groups, cũng như cách default_runner_config được áp dụng. So sánh các cấu hình limit và threads được đề xuất, sau đó xác minh rằng một runner mặc định có giới hạn hoạt động được cho các thao tác deployment mà không yêu cầu rate limiting dành riêng cho SCM.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
There have been multiple requests to set an upper limit on the number of git operations that are executed in parallel in the default Capistrano git strategy. Similarly, users are also asking for a limit on the number of parallel bundle install executions in capistrano-bundler.
What these tasks have in common is that they all use the default :parallel runner provided by SSHKit. When using Capistrano to deploy to a large number of servers, firing off these operations to all servers in parallel can overload shared resources like a git server or private gem repository.
Rather than implement rate limiting for each SCM, capistrano-bundler, etc., I feel like a more general solution should be provided by SSHKit itself.
My proposal would be to change the implementation of the :parallel runner to essentially be a subclass of the :groups runner, except with defaults of wait: 0 and limit: INFINITY. Then, if a user wants to limit the amount of parallelization, they could simply do this:
# Limit the default :parallel runner to 10 threads
SSHKit.config.default_runner_config = { limit: 10 }
If sharing implementation and configuration keys between :parallel and :groups is too confusing, then perhaps the :parallel runner could use a different configuration key (but to the same effect):
# Limit the default :parallel runner to 10 threads
SSHKit.config.default_runner_config = { threads: 10 }
Thoughts?
See also:
- Ngôn ngữ chính
- Ruby
- Star
- 1.2k
- Fork
- 256
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không 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 capistrano/sshkit
-
should have an openssh backendĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
capistrano/sshkit#563 · 6 reaction ·
-
No redaction for with valuesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
capistrano/sshkit#562 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
capistrano/sshkit#554 · 3 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
capistrano/sshkit#543 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
capistrano/sshkit#518 · 1 bình luận ·
Tất cả issue của capistrano/sshkit
Issue tương tự
-
Add Nagoya Ruby Kaigi 05Đang mởcontent good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
rubyevents/rubyevents#2182 ·
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 62/100
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
Homebrew/homebrew-cask#293134 ·
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
notch8/iiif_print#430 ·
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