Puncte:1

De ce trunchiază Nginx răspunsul de streaming JSON?

drapel in

Stiva noastră este Client (Browser) <-> Nginx Reverse Proxy <-> Server web (Flask+Gunicorn) <-> Server Golang gRPC

Problema este atunci când clientul face un apel către /realtimedata punct final, Flask deschide apoi conexiunea gRPC și începe să primească date printr-un flux unidirecțional server->client. Apoi îl transmite înapoi clientului. Când rulez asta fără Nginx, primesc toate răspunsurile. Când rulați cu Nginx, unele răspunsuri sunt trunchiate. De exemplu, dacă ne așteptăm la:

{
    "sursa": "serviceA",
    „marca temporală”: 123456789,
    "date": {
        „1”: 24,55667,
        „2”: -456,5656,
        ...
        „200”: 5.678
    }
}

Primim

{
    "sursa": "serviceA",
    "timp

Atunci

        ștampila": 123456789,
    "date": {
        „1”: 24,55667,
        „2”: -456,5656,
        ...
        „200”: 5.678
    }
}

Aceasta ar fi tipărită în console.log. eu am proxy_buffering dezactivat; în configurația nginx, altfel nu ajung date în browser. Nu sunt sigur cum să rezolvi această problemă.

Aici este un exemplu minim, reproductibil.

ACTUALIZAȚI: Am rulat exemplul minim reproductibil cu Apache2 în loc de Nginx și am experimentat aceleași trunchieri aleatorii.

drapel cn
Ce vrei să spui prin „Primim [...] și apoi [...]”?! Că oricum primești toate datele? Nu văd de ce ar fi o problemă.
Paul Côté avatar
drapel in
Imprimez răspunsul în consola din browser. Deci voi primi de exemplu o jumătate din răspuns, apoi cealaltă. Dar este o problemă deoarece `response.JSON()` produce o eroare când este trunchiat astfel.
Puncte:0
drapel ve

Am avut un comportament similar de la Apache(!) la spargerea unui răspuns al fișierului html de la django. S-a rupt întotdeauna în aceeași poziție fără niciun motiv. În cele din urmă, am descoperit că am instalat accidental un pachet mod_wsgi în Apache dintr-o versiune Python care nu se potrivea cu versiunea în care Apache îmi apela aplicația. Poate că te ajută.

Paul Côté avatar
drapel in
Hei, mulțumesc, voi verifica asta. Am ajuns să folosesc websocket-uri pentru a rezolva problema. Trunchierea s-a oprit.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.