2010-10-01 31 views
5

Tôi đang thêm Resque-Scheduler trong ứng dụng của mình trên HerokuLập lại lịch biểu trên Heroku ... Thực hiện điều khiển từ xa?

Vì vậy ... Tôi cần MỘT công nhân riêng biệt và độc lập làm người lên lịch và nhiều người đang thực hiện công việc.

Đây là cách tôi đã thực hiện nó:
Tôi đã một Heroku App riêng biệt mà không làm gì nhưng có 1 công nhân resque-scheduler, chạy 24/7, thêm Resque nhiệm vụ cho Redis DB của " xa "chính ứng dụng.

(tôi làm điều đó bản đồ công việc: làm việc nhiệm vụ để resque: scheduler hoặc resque: công việc)

Đây có phải là cách tốt nhất để làm điều đó trên nền tảng của Heroku; hoặc tôi làm điều đó hoàn toàn sai?

Cảm ơn!

EDIT: ứng dụng tối thiểu cho lịch trên Heroku: http://github.com/clmntlxndr/heroku-scheduler

UPDATE: Với CEDAR chồng mới trên Heroku và Procfiles, nó có thể để bắt đầu một nhiệm vụ riêng biệt cho mỗi công nhân.

web:  bundle exec rails server -p $PORT 
scheduler: bundle exec rake resque:scheduler 
worker:  bundle exec rake jobs:work 

http://devcenter.heroku.com/articles/procfile

Trả lời

3

Tôi nghĩ rằng tôi không nhận định câu hỏi của bạn lần đầu tiên. Tôi bị mất một phần mà lịch trình yêu cầu một công việc cào riêng biệt. Có, tôi nghĩ cách duy nhất để làm điều đó là có hai ứng dụng heroku riêng biệt, bởi vì công nhân của Heroku sẽ chỉ chạy rake jobs:work và có lẽ bạn chỉ có thể ánh xạ bản đồ này lên một trong các nhiệm vụ cào cào.

Bạn có thể thử này:

desc "Alias for resque:work (To run workers on Heroku)" 
task "jobs:work" => ["resque:work", "resque:scheduler"] 

Nhưng tôi có nghi ngờ về điều đó chân thành thực sự hoạt động bình thường với cách Heroku giám sát quá trình lao động và các công cụ. Ngoài ra, hãy kiểm tra kỹ cú pháp cào ở đó; nó chỉ là từ ký ức. Tôi biết nó có thể chỉ định nhiều phụ thuộc mặc dù.

+0

Đúng! Cách tôi mô tả trong câu hỏi của tôi đã gần như làm việc tốt (tôi sẽ đưa nó vào Github sớm). Tôi chỉ tự hỏi nếu nó là tốt trong nguyên tắc, và chờ đợi một người nào đó để nói với tôi "Stop! Bạn có thể chỉ định một công nhân khác biệt trên một nhiệm vụ riêng biệt làm điều đó: ..." :) –

+0

Vâng, khá chắc chắn không có cách nào để làm việc đó đi. – tfe

+0

FYI: https://github.com/clmntlxndr/heroku-scheduler –

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