Điểm:1

Tại sao Nginx lại cắt bớt phản hồi phát trực tuyến JSON?

lá cờ in

ngăn xếp của chúng tôi là Máy khách (Trình duyệt) <-> Nginx Reverse Proxy <-> Máy chủ web (Flask + Gunicorn) <-> Máy chủ Golang gRPC

Vấn đề là khi khách hàng thực hiện cuộc gọi đến /dữ liệu theo thời gian thực điểm cuối, Flask sau đó sẽ mở kết nối gRPC và bắt đầu nhận dữ liệu qua luồng một chiều máy chủ->máy khách. Sau đó, nó chuyển nó trở lại máy khách. Khi tôi chạy ứng dụng này mà không có Nginx, tôi nhận được tất cả phản hồi. Khi chạy với Nginx, một số phản hồi bị cắt bớt. Ví dụ: nếu chúng tôi mong đợi:

{
    "nguồn": "dịch vụA",
    "dấu thời gian": 123456789,
    "dữ liệu": {
        "1": 24,55667,
        "2": -456.5656,
        ...
        "200": 5,678
    }
}

Chúng tôi nhận được

{
    "nguồn": "dịch vụA",
    "thời gian

sau đó

        tem": 123456789,
    "dữ liệu": {
        "1": 24,55667,
        "2": -456.5656,
        ...
        "200": 5,678
    }
}

Điều này sẽ được in trong console.log. Tôi có tắt proxy_buffering; trong cấu hình nginx nếu không thì không có dữ liệu nào được đưa vào trình duyệt. Không chắc chắn làm thế nào để giải quyết vấn đề này.

Đây là một ví dụ tối thiểu, có thể tái sản xuất.

CẬP NHẬT: Tôi đã chạy ví dụ có thể lặp lại tối thiểu với Apache2 thay vì Nginx và trải qua các lần cắt ngắn ngẫu nhiên tương tự.

lá cờ cn
Ý bạn là gì khi "Chúng tôi nhận được [...] và sau đó [...]"? Rằng bạn vẫn nhận được tất cả dữ liệu? Tôi không thấy tại sao đó sẽ là một vấn đề.
Paul Côté avatar
lá cờ in
Tôi in phản hồi trong bảng điều khiển trên trình duyệt. Vì vậy, tôi sẽ nhận được ví dụ một nửa phản hồi, sau đó là nửa kia. Nhưng đó là một vấn đề vì `response.JSON()` tạo ra lỗi khi nó bị cắt ngắn như vậy.
Điểm:0
lá cờ ve

Tôi đã có hành vi tương tự từ Apache (!) Chia nhỏ tệp html phản hồi từ django. Nó luôn bị hỏng ở cùng một vị trí mà không có lý do. Cuối cùng tôi phát hiện ra rằng tôi đã vô tình cài đặt gói mod_wsgi vào Apache từ phiên bản Python không khớp với phiên bản mà Apache đang gọi ứng dụng của tôi. Có thể nó sẽ giúp ích cho bạn.

Paul Côté avatar
lá cờ in
Này, cảm ơn tôi sẽ kiểm tra xem. Tôi đã kết thúc việc sử dụng ổ cắm web để giải quyết vấn đề. Việc cắt ngắn đã dừng lại.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.