2011-11-05 22 views
5

Tôi đang sử dụng delay_job và tôi có thể chạy công việc bằng cách sử dụng công việc rake: làm việc nhưng sử dụng phiên bản được sao chép, nó không làm gì mặc dù tôi thấy nó trong danh sách quy trình.không Delayed_job daemon không chạy trong phát triển?

Tôi đang sử dụng:

  • ray (3.0.9)
  • delayed_job (2.1.4)
  • daemon (1.0.10)

Tôi đang chạy delayed_job sử dụng:

unix>RAILS_ENV=development script/delayed_job start 
+0

kết quả của 'RAILS_ENV = phát triển kịch bản/delayed_job status' là gì? – Ernest

+0

Bạn đã thử chạy nó không có đá quý daemon? – Ernest

+0

Gemfile.lock trình trạng thái daemon là một phụ thuộc bắt buộc nhưng tôi sẽ xóa sử dụng rõ ràng và thử nó. Lý do tôi đã làm điều đó đã cố gắng và buộc Daemonize sử dụng một phiên bản cụ thể (rất nhiều đề xuất StackOverflow xoay quanh việc sử dụng 1.0.10 cho daemon) vì tôi có daemon 1.1.4 trên hệ thống. Công việc – Aditya

Trả lời

3

Để trả lời câu hỏi của bạn, chúng tôi có thể cần thêm sự hình thành.

Công việc có được thêm vào cơ sở dữ liệu không? Có bất kỳ lỗi nào trong công việc không?

Kết quả của RAILS_ENV=development script/delayed_job status như tôi đã đề cập là gì?

Thứ hai, bạn đã trải qua các trang Wiki sự cố thường gặp nhất chưa?

https://github.com/collectiveidea/delayed_job/wiki/Common-problems

+0

được thêm vào cơ sở dữ liệu. Chúng không được xử lý bởi daemon nhưng được xử lý bởi công việc cào: công việc. Tôi sẽ kiểm tra thông báo trạng thái công việc bị trì hoãn nhưng tôi thấy rằng nó đang chạy (khi tôi bắt đầu hai lần, nó nói rằng một tiến trình đang chạy) + pid trong tệp delay_job.log khớp với pid của quá trình ruby ​​delay_job. – Aditya

+0

Trạng thái trả về 'delay_job: đang chạy [pid 1473]' – Aditya

3

Có thể là sự cố khi tải tệp lớp công việc tùy chỉnh. Để kiểm tra điều đó, hãy thử cách này:

  • Nhập bảng điều khiển đường ray rails console --sandbox.
  • Đảm bảo bạn có công việc trong bảng job = Delayed::Job.first.
  • Hãy thử YAML.load(job.handler). Nếu bạn gặp lỗi như sau: ArgumentError: undefined class/module MyCustomClass, có thể sự cố khi tải công việc tùy chỉnh của bạn
  • Vẫn còn trong bảng điều khiển đường ray, hãy chạy require 'My_Custom_Class. Sau đó chạy lại lệnh YAML.load(job.handler). Nếu điều này trả về đối tượng thích hợp thì đó chắc chắn là một vấn đề tải lớp.

Để khắc phục sự cố, hãy tạo tệp config/initializers/custom.rb và đặt nó vào require 'My_Custom_Class'.

Sau đó, bạn sẽ có thể chạy rake jobs::workoff và nhận được cái gì đó trông như thế này:

[Worker(host:my.host pid:5085)] Starting job worker 
[Worker(host:my.host pid:5085)] MyCustomJob completed after 0.0774 
[Worker(host:my.host pid:5085)] 1 jobs processed at 9.1935 j/s, 0 failed ... 
[Worker(host:my.host pid:5085)] No more jobs available. Exiting 
Các vấn đề liên quan