Tôi muốn nắm bắt và xử lý DeadlineExceededError để người dùng không thấy trang "Lỗi máy chủ" chuẩn mà App Engine ném theo mặc định.Tôi làm cách nào để thiết lập trình xử lý DeadlineExceededError toàn cầu?
Tôi biết rằng DeadlineExceededErrors là not caught when overriding handle_exception trong trình xử lý yêu cầu của bạn (chúng tôi đã thực hiện việc này).
Tôi đã cố gắng, nhưng không thành công cho đến nay, để sử dụng custom error_handlers app.yaml configuration như vậy:
error_handlers:
- error_code: timeout
file: timeout.html
... nhưng điều đó cũng không có vẻ để bắt DeadlineExceededErrors, trừ khi tôi đang làm gì đó sai.
Tôi biết rằng tôi có thể sử dụng mẫu sau để bắt DeadlineExceededErrors bên xử lý theo yêu cầu cụ thể:
class MainPage(webapp.RequestHandler):
def get(self):
try:
# Do stuff...
except DeadlineExceededError:
# Many Whelps! Handle it!
... nhưng tôi muốn tránh thêm này đến từng xử lý yêu cầu duy nhất trong ứng dụng của tôi.
Làm thế nào tôi có thể bắt được những kẻ hút khó nắm bắt trên toàn cầu?
Trong webapp2, bạn có thể đặt trình xử lý lỗi để xử lý mã trạng thái 500 - chủ yếu được sử dụng cho các trường hợp ngoại lệ chưa thực hiện. Ở đó, kiểm tra loại ngoại lệ và xử lý tương ứng: nếu isinstance (ngoại lệ, DeadlineExceededError): ... Tài liệu ở đây: http://webapp-improved.appspot.com/guide/exceptions.html#exceptions-in- the-wsgi-app – moraes
Tôi thực sự không biết điều đó; có, đó sẽ là một nơi thích hợp hơn để xử lý lỗi. –
Đây là những gì tôi đề nghị. Tuy nhiên, vui lòng không gửi các lỗi chuyển hướng - phân phát trang lỗi trên cùng một URL. –