How can I serve a movie file from the development server (dev_appserver.py) GAE Python?

I am trying to execute mp4 / video in the python GAE development environment (using dev_appserver.py), but so far I have not been able to play it in my browser.

Since the "Broken Pipe" error occurred on the development server and I was able to reproduce it in the production environment (google server), the problem may be caused by parallel browser requests. (If my understanding is correct, dev_appserver.py is single-threaded and cannot handle concurrent requests.)

I tried --disable-preconnect in Chrome, but this did not solve the problem.

Are there any workarounds? Your advice is really appreciated.

Edit: the movie file is stored as a static resource, and I tried to access it directly (did not use the video tag).

[Version Information]

  • OS: Ubuntu 12.04 LTE
  • Browser: Chrome 19.0.1084.46, Firefox 12.0
  • GAE: Python - 1.6.5,
  • Python: 2.7.3

[Error log]

    INFO     2012-05-21 07:35:04,575 dev_appserver.py:2891] "GET /static/test.mp4 HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 36240)
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 "/home/chikashi/Development/google_appengine/google/appengine/tools/dev_appserver.py", line 2579, in __init__
    BaseHTTPServer.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
----------------------------------------
+5
source share
1 answer

All that a very lengthy operation (such as showing a movie) will bind the stream until it completes. Because the development server is single-threaded, its only worker thread will have to wait for the download to complete before it can serve the next request.

In any case, the App Engine working environment does not have this problem and will happily serve your file if it is not too large (I don’t remember the limit).

. -, App Engine ( , ;-))

+1

All Articles