Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Feature: Configuration to set maximum parallelization of :parallel runner

Đang mở
#414 10 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
ruby
Lĩnh vực
devops

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ả

discuss! new feature

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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của capistrano/sshkit

Tất cả issue của capistrano/sshkit

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.