♪ 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 runserverwhich 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




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2