Tôi nghĩ rằng tôi không hoàn toàn hiểu quy trình triển khai. Dưới đây là những gì tôi biết:Hiểu Triển khai Ứng dụng Web Python
- khi chúng ta cần phải làm triển khai nóng - có nghĩa là chúng ta cần phải thay đổi mã đó là sống - chúng ta có thể làm điều đó bằng cách tải lại mô-đun, nhưng
imp.reload
là một ý tưởng tồi, và chúng ta nên khởi động lại ứng dụng thay vì tải lại các module thay đổi- lý tưởng là mã chạy phải là một bản sao của kho lưu trữ mã của bạn, và bất cứ lúc nào bạn cần phải triển khai, bạn chỉ cần kéo những thay đổi
Bây giờ, giả sử tôi có nhiều phiên bản wsgi
ứng dụng chạy sau một proxy ngược như nginx
(trên các cổng như 8011, 8012, ...). Và, giả sử rằng tôi nhận được yêu cầu 5
mỗi giây.
Bây giờ trong trường hợp này, tôi nên cập nhật mã của mình như thế nào trong tất cả các phiên bản đang chạy của ứng dụng.
- Nếu tôi dừng lại tất cả các trường hợp, sau đó cập nhật tất cả trong số họ, sau đó khởi động lại tất cả - Tôi chắc chắn sẽ mất một số yêu cầu
- Nếu tôi cập nhật mỗi trường hợp từng người một - sau đó các trường hợp sẽ được ở trạng thái không nhất quán (một số sẽ chạy mã cũ và một số mới) cho đến khi tất cả chúng được cập nhật. Bây giờ nếu một yêu cầu truy cập một thể hiện được cập nhật, và sau đó một yêu cầu tiếp theo (và liên quan) sẽ truy cập một cá thể cũ hơn (chưa được cập nhật) - thì tôi sẽ nhận được kết quả sai.
Ai đó có thể giải thích kỹ lưỡng về cách các ứng dụng bận rộn như thế này được triển khai nóng?
Câu hỏi hay. Mong các câu trả lời! – invert