♪ Broken pipe when attempting to download a large video
-
There is a method:
startLesson: function(lesson) { var scope = this;
scope.getLessonDataFromFile(lesson.id).then(function (data) {
scope.mode = 'LESSON';
scope.lesson.name = lesson.filename;
scope.lesson.task = data;
scope.lesson.taskHash = hash(JSON.stringify(scope.lesson.task));
scope.lesson.flags = [];
scope.lesson.score = [];
scope.lesson.visibleDescriptions = [];
scope.lesson.visibleDescriptionActions = [];
scope.lesson.editMode = false;
scope.lesson.analysisMode = false;
scope.lesson.totalScore = 0;
scope.lesson.maxScore = scope.lesson.task.timeslots.length * 15;
$("#video")[0].load();
$("#video")[0].addEventListener("canplay", scope.updateDurationOnCanplay, false);
});
When this code tries to download a video that is bigger than a certain value (the exact value I have not yet determined, but it's somewhere between 33 and 72 MBs), the following is happening:
[20/Jun/2016 15:24:18] "GET /lessons/api/lessons/01 HTTP/1.1" 200 6760
[20/Jun/2016 15:24:19] "GET /media/video/01.mp4 HTTP/1.1" 200 190267623
[20/Jun/2016 15:24:19] "GET /media/video/01.mp4 HTTP/1.1" 200 688128
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 86, in run
self.finish_response()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 128, in finish_response
self.write(data)
File "/usr/lib/python2.7/wsgiref/handlers.py", line 217, in write
self._write(data)
File "/usr/lib/python2.7/socket.py", line 328, in write
self.flush()
File "/usr/lib/python2.7/socket.py", line 307, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 104] Connection reset by peer
[20/Jun/2016 15:24:19] "GET /media/video/01.mp4 HTTP/1.1" 500 59-
Broken pipe from ('127.0.0.1', 44686)
My API:
@staticmethod
def get(request, lesson_name):
data_file_path = os.path.join(VIDEO_ROOT, lesson_name + '.json')
data = {}
try:
with open(data_file_path, 'r') as data_file:
data = json.load(data_file)
except IOError:
data['timeslots'] = []
data['id'] = lesson_name
#data['filename'] = os.path.join(settings.MEDIA_URL, 'video', lesson_name + '.webm')
data['filename'] = os.path.join(settings.MEDIA_URL, 'video', lesson_name + '.mp4')return Response(data)
What's wrong?
-
-
The possible reason for the error is that
used
runserver
which is not intended for real use. Broken pip arises, for example, if the request from the browser was suddenly interrupted. Addressing the problem:runserver
Something designed not meant for development, but for real use. For example http://gunicorn.org/ ♪The quote is taken from the answer https://ru.stackoverflow.com/users/181901/%D0%9D%D0%B8%D0%BA%D0%B8%D1%82%D0%B0-%D0%9A%D0%BE%D0%BD%D0%B8%D0%BD