Tôi có một ứng dụng chạy trên Heroku, thỉnh thoảng, báo cáo Hết thời gian :: Lỗi và (ActionView :: Template :: Error) "thực thi hết hạn".Xử lý TimeOut :: Lỗi khi thử lại
Điều này xảy ra trên toàn bộ trang web (nghĩa là không có trong một bộ điều khiển cụ thể) nên tôi muốn tạo một hàm sẽ xử lý hai lỗi này, trước tiên bằng cách thử lại hai lần và chuyển hướng người dùng đến trang sẽ cho họ biết máy chủ bận.
kế hoạch hiện tại của tôi là sử dụng sau trong ApplicationController:
rescue_from Timeout::Error, :with => :rescue_from_timeout
def rescue_from_timeout
sleep 2
retry
end
nhưng điều này sẽ chỉ lặp và vòng lặp. Tôi muốn nó phá vỡ sau hai lần thử. Làm thế nào tôi có thể làm điều đó?
Ngoài ra, Làm cách nào để xử lý ActionView :: Mẫu :: Lỗi cho "thực thi đã hết hạn"? Tôi không muốn giải cứu tất cả các ActionView :: Template :: Lỗi với retries, chỉ có những người khiêu khích "thực hiện hết hạn".
Đây là những gì ngoại trừ tôi nói:
[Exception] home#index (ActionView::Template::Error) "execution expired"
hoặc
[Exception] calculations#result (ActionView::Template::Error) "Timeout::Error: execution expired
Câu hỏi của tôi, như sau: Làm thế nào tôi có thể xử lý hai loại lỗi bằng cách thử lại lần đầu tiên hai lần và sau đó ném một ngoại lệ/chuyển hướng đến trang lỗi?
Tại sao ngoại lệ này được nâng lên? Bạn đã triển khai một số tác vụ dài hạn, ứng dụng của bạn có phụ thuộc vào dịch vụ web bên ngoài không? – Jef