Một cái gì đó mà tôi chỉ nghĩ về:Điều gì xảy ra khi bạn có vòng lặp vô hạn trong mã xem Django?
Giả sử tôi đang viết mã xem cho trang web Django của mình và tôi mắc lỗi và tạo vòng lặp vô hạn.
Bất cứ khi nào ai đó cố gắng truy cập chế độ xem, nhân viên được chỉ định cho yêu cầu (có thể là nhân viên Gevent hoặc chuỗi Python) sẽ ở trong vòng lặp vô thời hạn.
Nếu tôi hiểu chính xác, máy chủ sẽ gửi lỗi hết thời gian chờ tới máy khách sau 30 giây. Nhưng điều gì sẽ xảy ra với công nhân Python? Nó sẽ tiếp tục hoạt động vô thời hạn? Nghe có vẻ nguy hiểm!
Hãy tưởng tượng tôi có một máy chủ trong đó tôi đã phân bổ 10 công nhân. Tôi để cho nó chạy và tại một số điểm, một khách hàng cố gắng truy cập vào khung nhìn với vòng lặp vô hạn. Một nhân viên sẽ được gán cho nó, và sẽ có hiệu lực chết cho đến khi máy chủ tiếp theo khởi động lại. Điều nguy hiểm là lúc đầu tôi sẽ không nhận ra điều đó, bởi vì trang web sẽ chậm hơn đáng kể, có 9 công nhân thay vì 10. Nhưng sau đó nó có thể xảy ra lặp đi lặp lại trong một khoảng thời gian dài, có thể vài tháng. Trang web sẽ chỉ chậm dần, cho đến khi cuối cùng nó sẽ rất chậm chỉ với một công nhân.
Khởi động lại máy chủ sẽ giải quyết được sự cố, nhưng tôi ghét phải có chức năng của trang web phụ thuộc vào khởi động lại máy chủ.
Đây có phải là sự cố thực sự xảy ra không? Có cách nào để tránh không?
Cập nhật: Tôi cũng thực sự đánh giá cao cách lấy chồng của chuỗi/công nhân bị kẹt trong vòng lặp vô hạn, vì vậy tôi có thể gửi email cho tôi để tôi biết vấn đề . (Tôi không biết làm thế nào để làm điều này bởi vì không có ngoại lệ nào được nêu ra.)
Cập nhật để mọi người nói về ảnh hưởng của "Tránh viết mã có vòng lặp vô hạn": Trong trường hợp không phải là hiển nhiên, tôi không dành thời gian rảnh để cố tình đưa các vòng vô hạn vào mã của mình. Khi những điều này xảy ra, chúng là những sai lầm, và những sai lầm có thể được giảm thiểu nhưng không bao giờ hoàn toàn tránh được. Tôi muốn biết rằng ngay cả khi tôi phạm sai lầm, sẽ có một mạng lưới an toàn sẽ thông báo cho tôi và cho phép tôi khắc phục vấn đề.
thú đọc: http: // stackoverflow. com/questions/8685695/how-do-i-run-long-term-infinite-python-processes –
Tôi đã cập nhật câu trả lời của mình, tôi hy vọng nó sẽ trả lời câu hỏi của bạn ngay bây giờ :) –