error: [Errno 32] Broken pipe
Arbeite ich an einem Django-Projekt. Alles ging gut, bis ich schuf ein Ajax-request zum senden von Werten aus der html-Seite für das backend (views.py).
Wenn ich die Daten senden mit Ajax, ich bin in der Lage, die Werte anzeigen, die weitergegeben werden views.py und es sogar erreicht, die render_to_response Methode und zeigt meine Seite, wirft aber die broken pipe-Fehler im terminal. Ich sehe nicht, jede Art von Unterbrechungen an das Programm, aber ich wollte wissen, ob es einen Weg gibt, um zu verhindern, dass dieser Fehler Auftritt. Ich habe die anderen Antworten. Aber kein Glück so weit.
Wenn ich versuche, Treffer erneut senden auf der aktualisierten Seite, bekomme ich diese Meldung:
Die Seite, die Sie suchen verwendet die Informationen, die Sie eingegeben haben. Rückkehr zu dieser Seite führen könnte, die jede Aktion, die Sie nahm wiederholt werden. Wollen Sie fortfahren? [Senden] [Abbrechen]`
Hier ist der dump:
Traceback (most recent call last):
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 34812)
----------------------------------------
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 284, in run
self.finish_response()
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 324, in finish_response
self.write(data)
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 403, in write
self.send_headers()
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 467, in send_headers
self.send_preamble()
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 385, in send_preamble
'Date: %s\r\n' % http_date()
File "/usr/lib/python2.7/socket.py", line 324, in write
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 570, in __init__
BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
Update:
Hier ist der code, den ich sende:
$( document ).ready(function() {
$.csrftoken();
$("#submitdata").click(function(){
//values = [tmode, fmode, t_cool, t_heat, hold];
values = {
"tmode": tmode,
"fmode": fmode,
"t_cool": t_cool,
"t_heat": t_heat,
"hold": hold
};
var jsonText = JSON.stringify(values);
$.ajax({
url: "/submitdata/",
type: 'POST',
data: jsonText,
dataType: 'json',
success:function(data){
console.log(data.success);
},
complete:function(){
console.log('complete');
},
error:function (xhr, textStatus, thrownError){
console.log(thrownError);
console.log(obj);
}
});
});
});
Und hier ist meine views.py:
@login_required
def submitvalues(request):
#context = RequestContext(request)
if request.POST:
jsonvalues = json.loads(request.raw_post_data)
print jsonvalues
return HttpResponse(json.dumps(dict(status='updated')), mimetype="application/json")
Ich bin immer noch vor dem gleichen Problem. Kann mir jemand helfen mit diesem?
Bearbeiten am 5/28/2014:
Ich habe gerade herausgefunden, der Grund für ein Gebrochenes Rohr. Es war, weil ich nicht senden zurück die Antwort von Python zu haben und nur erwarten, dass die Seite automatisch aktualisiert. Ich bin ein Neuling auf alle von diesem, und ich brauchte eine Weile, um herauszufinden, warum dies passiert ist.
InformationsquelleAutor der Frage kruthirshanks | 2014-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht eingestellt-code, aber das ist wahrscheinlich, weil Sie der Auslöser für den Ajax-request auf eine Schaltfläche senden, aber nicht verhindert die default-Aktion. Also den Ajax-request gemacht wird, sondern durch die Zeit, die kommt, um die Daten zurückzugeben, hat der browser bereits aufgefordert, auf der nächsten Seite sowieso, also gibt es nichts, um es zu empfangen.
InformationsquelleAutor der Antwort Daniel Roseman
Ich habe dieses problem gelöst, indem Sie hinzufügen:
Da fand ich einige Fehler auf das senden von post-Anforderung Seite:
Dann hatte ich diese Lösung und gelöst oben genannte problem.
InformationsquelleAutor der Antwort Cathy Lin