Tôi có một số công nhân đang được chạy bằng Sidekiq và được lên lịch sử dụng Sidetiq. Tôi đang tìm lời khuyên về cách tốt nhất để chờ đợi cho tất cả các công nhân hoàn thành trước khi thực hiện một cuộc gọi lại, tương tự như chức năng xếp hàng của Sidekiq-Pro. Bất kỳ lời khuyên về các tùy chọn có thể sẽ được đánh giá rất nhiều!Làm thế nào để chờ cho nhân viên Sidekiq song song hoàn thành trước khi gọi một phương pháp khác?
Trả lời
Đối với trường hợp sử dụng đơn giản, bạn có thể thăm dò ý kiến stats để nhận số lượng công việc đang chờ xử lý cho mỗi hàng đợi.
Vì vậy, nếu bạn biết rằng tất cả công việc của bạn đi đến một hàng đợi cụ thể và không có công việc nào khác trong hàng đợi đó từ nơi khác, điều này là đủ. Đối với trường hợp sử dụng cao cấp hơn/phức tạp, bạn có thể tham khảo các API source
Một giải pháp đơn giản là sử dụng một Redis dựa truy cập (kể từ khi bạn đang sử dụng Redis) và atomically decrement nó từ từng công việc, và publish một sự kiện một lần đếm đạt zero .
Bạn có thể viết một phương pháp:
def wait_for_sidekiq
sleep(1) until Sidekiq::Workers.new.size == 0 && Sidekiq::Queue.new.size == 0
end
Tôi cũng xin đề nghị bạn nên chắc chắn rằng các công việc đã xếp hàng ở nơi đầu tiên:
def wait_for_queuing
sleep(1) until Sidekiq::Queue.new.size > 0 || Sidekiq::Workers.new.size > 0
end
này là cần thiết, bởi vì đôi khi là người đầu tiên phương pháp có thể được thực hiện một vài miliseconds trước khi xếp hàng các công việc, để nó sẽ không chờ đợi ở tất cả.
Sidekiq-batch gem này Bạn sẽ thấy, tôi đã thử nó và nó hoạt động giống như hàng loạt Pro của Sidekiq, và nó miễn phí
Hy vọng điều này có thể giúp
- 1. Làm thế nào để sử dụng chờ đợi trong một foreach song song?
- 2. nhiều phương thức cho mỗi nhân viên của sidekiq
- 3. Làm thế nào để cấu hình các hạt nhân từ xa song song trong Mathematica?
- 4. Làm thế nào để song song các phép nhân ma trận thưa thớt scipy
- 5. Chức năng gọi khi superjob sidekiq-superworker hoàn thành
- 6. Phép nhân ma trận song song
- 7. Không nhảy song song với IE11 - nhưng làm thế nào?
- 8. Nhân song song đa GPU cơ bản của phép nhân
- 9. song song javascript
- 10. Làm thế nào để làm cho xUnit chạy một lý thuyết song song?
- 11. Cuộc gọi Ajax song song trong Javascript/jQuery
- 12. Làm thế nào để chạy cùng một công việc nhiều lần song song với Jenkins?
- 13. Trong Perl, làm thế nào tôi có thể chờ cho các chủ đề kết thúc song song?
- 14. Kỹ thuật song song clojure nào sử dụng khi tìm kiếm một không gian giải pháp đang phát triển?
- 15. Làm thế nào để chạy nhiều lệnh DOS song song?
- 16. nodejs: chờ đợi cho các phương pháp khác để kết thúc trước khi thực hiện
- 17. Thuật toán song song để xây dựng một trie?
- 18. Cách soạn hai Tác vụ song song để hủy một tác vụ nếu một tác vụ khác không thành công?
- 19. Làm thế nào để chạy hàm đã cho trong Bash song song?
- 20. Phương pháp phân loại nào phù hợp nhất để xử lý song song?
- 21. Làm thế nào để chờ hoàn thành chuỗi trước khi tiếp tục?
- 22. Python song song: Gọi lại là gì?
- 23. Làm thế nào để song song chức năng tinh khiết nhỏ?
- 24. Không đồng bộ/chờ và song song trong C#
- 25. Làm thế nào để chờ cho đến khi một SwingWorker hoàn tất?
- 26. Làm thế nào để khai thác bất kỳ song song nào trong mã song song haskell của tôi?
- 27. OpenMP - Chạy mã song song bên trong mã song song
- 28. Cách đơn giản nhất để chạy ba phương pháp song song trong C#
- 29. Bash Script Gọi một tập lệnh bash khác và chờ cho nó hoàn thành trước khi tiếp tục
- 30. pragma OMP song song cho vs pragma OMP song song
Thật không may là cách tốt nhất mà tôi đã tìm thấy là " biết "có bao nhiêu công việc trong một đợt, và sau đó giữ một đếm khi họ hoàn thành (hoặc lỗi). – vereecjw
Có một lý do tôi tính tiền cho tính năng đó: nó cực kỳ hữu ích và đồng thời vô cùng khó khăn để xây dựng. Tôi cho rằng bạn không có ngân sách? –
Đó là một bước mà tôi nghĩ cuối cùng chúng tôi sẽ hướng tới, nhưng cho đến khi quy trình ETL của chúng tôi được xác định rõ hơn và chúng tôi đang đọc nhiều nguồn dữ liệu hơn/sử dụng nhiều công nhân hơn, không cần 100% ở giai đoạn này. Nó chắc chắn là một cái gì đó trên radar của chúng tôi, nhưng tại thời điểm này, tôi chỉ tìm kiếm một giải pháp tạm thời. – AvocadoRivalry