2012-03-26 33 views
13

Tôi quan tâm đến việc chạy một công việc cào chạy rất dài, một công việc sẽ mất nhiều giờ để hoàn thành và tôi quan tâm đến việc tìm hiểu về các phương pháp hay nhất để giải quyết vấn đề này.Xử lý nhiệm vụ cào chạy rất dài

giải pháp

Có thể tôi đã tìm thấy:

  1. Thiết lập một công việc định kỳ
  2. delayed_job
  3. resque

cron có vẻ như một giải pháp đơn giản để thiết lập, nhưng nó lý tưởng cho một nhiệm vụ rất dài? Bạn sử dụng những gì và những lợi thế/bất lợi của giải pháp của bạn là gì?

Trả lời

30

Cá nhân tôi yêu thích Resque, bạn có thể sử dụng đá quý resque-scheduler để xử lý các tác vụ chạy dài hoặc định kỳ.

Nếu bạn không phải thực hiện nhiệm vụ của mình thường xuyên, bạn có thể hủy bỏ tác vụ rake để đảm bảo nhiệm vụ tiếp tục chạy nếu phiên SSH của bạn bị chết hoặc gì đó.

Hãy thử một cái gì đó như thế này:

nohup rake my:task & 

nohup sẽ gửi kết quả đến nohup.out trong thư mục bạn chạy các nhiệm vụ trong, và cũng sẽ cho phép rời khỏi phiên ssh của bạn mà không cần quá trình hấp hối, thứ hai là & sẽ chạy nó như một deamon.

+0

Điều này có vẻ như nó sẽ đáp ứng nhu cầu của tôi một cách hoàn hảo. Tôi sẽ giữ cho câu hỏi này mở ra một chút thời gian trước khi tôi chấp nhận để nghe những người khác pov. Cảm ơn! –

+0

Không có prob! Tôi hy vọng bạn tìm thấy giải pháp mà bạn đang tìm kiếm! Đăng giải pháp của bạn một khi bạn tìm thấy nó! –

1

Trong một ứng dụng tôi đã tạo, người dùng có khả năng tải lên các tệp PDF được thu nhỏ khi tải lên để tạo hình ảnh xem trước. Vì các tệp PDF có thể cực kỳ lớn nên việc thu nhỏ có thể mất một lúc và phải chạy ở chế độ nền. Để làm điều này, tôi đã sử dụng

  • Paperclip cho tải lên,
  • các delayed_paperclip đá quý để trao tắt thumbnailing đến một quá trình nền,
  • Resque, được hỗ trợ bởi Redis, xử lý hàng đợi công nhân, và
  • đá quý God, để khởi động công nhân Redis và Resque và theo dõi toàn bộ shebang.

Mặt khác, bạn có giao diện Resque tiện lợi để xem nhân viên của bạn hoạt động, và bạn có Thượng đế ở đó để xem (và giết, và khởi động lại) quy trình chạy trốn (có xu hướng xảy ra khá bit khi bạn đang xử lý các tệp PDF trong ImageMagick), làm cho toàn bộ mọi thứ ổn định hơn và đáng tin cậy hơn.

Ở phía bên trái, đó là một điều khó khăn hơn rất nhiều để thiết lập hơn một công việc định kỳ. Nhưng có cron chạy một quá trình dài, bộ nhớ chuyên sâu unmonitored có vẻ giống như một công thức cho thảm họa cho tôi.

Hy vọng điều đó sẽ hữu ích!

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