2014-07-07 14 views
6

Tôi cần triển khai một số xử lý nền tới 1) gửi email, 2) thực hiện một số cuộc gọi API. Và, bất kỳ hệ thống nào tôi sử dụng, tôi cũng sẽ kết hợp với một số loại cron scheduler (Bất cứ khi nào có khả năng). Tôi tò mò, tôi nhận ra rằng có một loạt đá quý chế biến nền thực sự tuyệt vời (Delayed Job, Sidekiq, Resque), nhưng tôi cũng hiểu rằng bạn có thể thực hiện xử lý nền với chỉ một tác vụ cào trên video của Ryan Bate: http://railscasts.com/episodes/127-rake-in-background.Sự khác biệt giữa việc chạy tác vụ rake trong nền so với sử dụng gem như Delayed Job, Resque, hoặc Sidekiq là gì?

Ưu điểm/khuyết điểm của việc sử dụng đá quý VS tác vụ cào với quá trình nền là gì? Một điều về thứ hai liên quan đến tôi là bạn phải quay lên một môi trường mới mỗi khi một công việc cào được gọi, đó là tốn kém khủng khiếp trên bộ nhớ.

Xin lưu ý, tôi không cần so sánh các đá quý. Chuỗi video này đã làm rất tốt ở đây: http://www.sitepoint.com/series/comparing-ruby-background-processing-libraries/

Trả lời

3

Song song. Bạn có thể có N công nhân gửi email song song. Với cào bạn có một luồng đơn, việc gửi nhiều email sẽ mất một lúc.

+0

Có thời gian tốt không phải là siêu quan trọng vì nó đã không đồng bộ, và thành thật mà nói tôi không có nhiều email. Suy nghĩ nhanh chóng, việc quay lên một môi trường mới không phải là một vấn đề lớn với phương pháp cào? – james

1

Ngoài ra một sự khác biệt rất lớn đó là một sự phá vỡ đối với tôi là công việc cào trong nền chạy cùng Heroku dyno, nhưng các tiện ích khác yêu cầu bạn phải có một dyno công nhân riêng biệt.

EDIT, trong trường hợp bất cứ ai được googling, chỉ biết rằng trong Sidekiq bạn có thể sử dụng Dyno lao động tương tự, xem hướng dẫn này: https://coderwall.com/p/fprnhg

0

Một khác biệt lớn có thể là công cụ một viên ngọc như sidekiq cung cấp cho bạn để xử lý công việc nền. Ví dụ: nếu bạn cần xử lý một công việc nền được lên lịch để nói, đọc nhiều tệp CSV mỗi ngày, có thể bạn cần xử lý hoặc ít nhất là xem kết quả của quá trình xử lý đó, đọc chỉ số, thử lại trong trường hợp lỗi , vv Tôi đoán bạn sẽ phải tự viết cho mình một tác vụ cào.

Trong trường hợp của tôi (tôi đã ở đây googling), tôi cần một nhiệm vụ rất đơn giản và không quá nặng để được thực hiện theo lịch trình và không đồng bộ, vì vậy tôi đang đi với một nhiệm vụ rake và tôi tiết kiệm bản thân mình đi qua cài đặt, cấu hình và duy trì một đá quý như sidekiq (dễ dàng như nó có thể) với các phụ thuộc của nó trên máy chủ.

Các vấn đề liên quan