Score:1

เหตุใด Nginx จึงตัดทอนการตอบสนองการสตรีม JSON

ธง in

กองของเราคือ ลูกค้า (เบราว์เซอร์) <-> Nginx Reverse Proxy <-> เว็บเซิร์ฟเวอร์ (Flask + Gunicorn) <-> เซิร์ฟเวอร์ Golang gRPC

ปัญหาคือเมื่อลูกค้าโทรไปที่ /ข้อมูลเรียลไทม์ จุดสิ้นสุด จากนั้น Flask จะเปิดการเชื่อมต่อ gRPC และเริ่มรับข้อมูลผ่านเซิร์ฟเวอร์->ไคลเอนต์ สตรีมทิศทางเดียว จากนั้นจะส่งกลับไปยังลูกค้า เมื่อฉันเรียกใช้โดยไม่มี Nginx ฉันจะได้รับคำตอบทั้งหมด เมื่อทำงานด้วย Nginx การตอบสนองบางอย่างจะถูกตัดทอน ตัวอย่างเช่น หากเราคาดหวัง:

{
    "แหล่งที่มา": "serviceA",
    "การประทับเวลา": 123456789,
    "ข้อมูล": {
        "1": 24.55667,
        "2": -456.5656,
        ...
        "200": 5.678
    }
}

เราได้รับ

{
    "แหล่งที่มา": "serviceA",
    "เวลา

แล้ว

        แสตมป์": 123456789,
    "ข้อมูล": {
        "1": 24.55667,
        "2": -456.5656,
        ...
        "200": 5.678
    }
}

สิ่งนี้จะถูกพิมพ์ใน console.log ฉันมี ปิด proxy_buffering; ในการกำหนดค่า nginx มิฉะนั้นจะไม่มีข้อมูลส่งไปยังเบราว์เซอร์ ไม่แน่ใจว่าจะแก้ไขปัญหานี้อย่างไร

ที่นี่ เป็นตัวอย่างขั้นต่ำที่สามารถทำซ้ำได้

อัปเดต: ฉันได้รันตัวอย่างขั้นต่ำที่ทำซ้ำได้ด้วย Apache2 แทนที่จะเป็น Nginx และพบการตัดทอนแบบสุ่มแบบเดียวกัน

cn flag
คุณหมายถึงอะไรโดย "เราได้ [...] แล้ว [...]"?! ว่าคุณได้รับข้อมูลทั้งหมดหรือไม่ ฉันไม่เห็นว่าทำไมนั่นถึงเป็นปัญหา
Paul Côté avatar
in flag
ฉันพิมพ์การตอบกลับในคอนโซลบนเบราว์เซอร์ ดังนั้นฉันจะได้รับคำตอบ เช่น ครึ่งหนึ่งของคำตอบ จากนั้นอีกครึ่งหนึ่ง แต่มันเป็นปัญหาเพราะ `response.JSON()` ทำให้เกิดข้อผิดพลาดเมื่อถูกตัดทอนเช่นนั้น
Score:0
ธง ve

ฉันมีพฤติกรรมที่คล้ายกันจาก Apache (!) แยกไฟล์ html ที่ตอบสนองจาก django มันมักจะแตกที่ตำแหน่งเดิมโดยไม่มีเหตุผล ในที่สุดฉันก็พบว่าฉันบังเอิญติดตั้งแพ็คเกจ mod_wsgi ลงใน Apache จากเวอร์ชัน Python ที่ไม่ตรงกับเวอร์ชันที่ Apache เรียกใช้แอปของฉัน บางทีมันอาจจะช่วยคุณได้

Paul Côté avatar
in flag
เฮ้ ขอบคุณ ฉันจะลองดู ฉันลงเอยด้วยการใช้ websockets เพื่อแก้ปัญหา การตัดทอนหยุดลง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา