POST abbrechen (WSGI/Werkzeug)

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Hallo Forum!

Ich baue gerade an einer WSGI-Applikation mit Werkzeug, in der man Dateien hochladen kann (via HTML-Formular als multipart/formdata). Nun kann es aus verschiedenen Gründen dazu kommen, dass der Server die Datei ablehnt, noch bevor er sie komplett gelesen hat (zu groß, post mit ungültigen Parametern, etc).

Wenn ich einfach eine Response liefere, in etwa so:

Code: Alles auswählen

from werkzeug.wrapper import Request, Response
# [...]
def controller(request):
    if int(request.headers['Content-Length']) > MAX_SIZE:
        return Respone("zu gross!")
    elif some_random_condition:
        return Response("the stars aren't right")
    # [...]
    else:
        # read request.input_stream
...ist das Resultat im Firefox ab einer bestimmten Größe der hochzuladenden Datei "Verbindung Unterbrochen".
Ok, nicht so verwunderlich, schliesslich erwarte ich dadurch implizit vom Client, die HTTP-Response auszulesen, bevor er überhaupt den Request gestellt hat, oder zumindest, den rest aus der geschlossenen Verbindung (gibt TCP sowas überhaupt her?)
Leider finde ich im passenden RFC (rfc2616, imho) nichts explizites über die Reihenfolge, und diese 100-continue-Geschichte scheint nicht per HTML nutzbar zu sein (und sie ist auch nicht für alle Fehler geeignet, da es welche gibt, die erst
beim Lesen des Streams auffallen können).

Meine Frage: Liege ich da richtig, dass es keine HTTP-Konforme Methode gibt,
die Datei nicht komplett zu lesen? Oder mache ich nur Fehler bei der Benutzung
von werkzeug/wsgi?
Antworten