SimpleHTTPServer - Serving Big Files

Obererpel picture Obererpel · Sep 23, 2012 · Viewed 7k times · Source

i'm using python -m SimpleHTTPServer for a small project. The file index.html references some videos. <video><source src="big_buck_bunny_480p_stereo.ogg"></video> This File has a size of 159 MB. When I try to download it, SimpleHTTPServer throws some error messages instead of my video.

Marc-Laptop - - [23/Sep/2012 18:18:29] "GET /big_buck_bunny_480p_stereo.ogg HTTP
/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('192.168.4.38', 51152)
Traceback (most recent call last):
  File "C:Program Files (x86)PythonlibSocketServer.py", line 284, in _handle
_request_noblock
    self.process_request(request, client_address)
  File "C:Program Files (x86)PythonlibSocketServer.py", line 310, in process
_request
    self.finish_request(request, client_address)
  File "C:Program Files (x86)PythonlibSocketServer.py", line 323, in finish_
request
    self.RequestHandlerClass(request, client_address, self)
  File "C:Program Files (x86)PythonlibSocketServer.py", line 640, in __init_
_
    self.finish()
  File "C:Program Files (x86)PythonlibSocketServer.py", line 693, in finish
    self.wfile.flush()
  File "C:Program Files (x86)Pythonlibsocket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen

----------------------------------------

Answer

karlcow picture karlcow · Jan 7, 2013

simpleHTTPServer is trying to buffer everything and indeed will explode for the lack of memory. It is better to do it asynchronously but simpleHTTPServer doesn't know how to do that. Check that thread. Someone proposed a modified version of simpleHTTPserver: SimpleAsyncHTTPServer.py