Flask Streaming mit JSON
Verfasst: Dienstag 2. März 2021, 16:55
Ich möchte eine Liste von JSONs Häppchenweise an den Client zurücksenden.
Die Anfrage starte ich via einem Ajax Script.
Um das ganze zu Testen habe ich ein kleines Testkonstrukt aufgebaut. Texte Stückweise an den Client zu versenden funktioniert. Allerdings will ich es einfach nicht mit JSONs gelingen.
Folgender Code zeigt nur eine Momentaufnahme. Ich hab schon einiges ausprobiert.
Ohne das json.dumps(j).encode('utf-8') und encodieren, wird eine Exception geworfen, dass unbedingt Bytes verlangt sind.
So ist die Fehlermeldung zwar verschwunden, aber es schlägt in Ajax auf.
Das Ajax Script funktioniert. Datatype und Contenttype wurde natürlich umgestellt.
Über Vorschläge warum es nicht funktioniert, wäre ich sehr dankbar.
Die Anfrage starte ich via einem Ajax Script.
Um das ganze zu Testen habe ich ein kleines Testkonstrukt aufgebaut. Texte Stückweise an den Client zu versenden funktioniert. Allerdings will ich es einfach nicht mit JSONs gelingen.
Folgender Code zeigt nur eine Momentaufnahme. Ich hab schon einiges ausprobiert.
Code: Alles auswählen
@app.route("/testloop", methods=['POST'])
def testloop():
def generate():
print("Testlooop")
p1 = '{ "name":"John"}'
dummy = json.loads(p1)
list = ['1', '2']
json_list = [dummy, dummy, dummy, dummy]
for j in json_list:
yield json.dumps(j).encode('utf-8')
return Response(stream_with_context(generate()), mimetype="application/json")
So ist die Fehlermeldung zwar verschwunden, aber es schlägt in Ajax auf.
Das Ajax Script funktioniert. Datatype und Contenttype wurde natürlich umgestellt.
Code: Alles auswählen
,,,,,
contentType: "application/json",
dataType: 'json',
,,,,,