import os
import socket
import SimpleHTTPServer
import SocketServer
import utils
from egaia_config import getConfig
# Allow stopping and re-starting the server without socket re-use error
# https://stackoverflow.com/a/18858817
[docs]class MyTCPServer(SocketServer.TCPServer):
[docs] def server_bind(self):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind(self.server_address)
[docs]def serve(port):
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = MyTCPServer(("", port), Handler)
pub = os.path.expanduser(getConfig('archive', 'pub_path'))
os.chdir(pub)
print "serving at port", port
print 'access from http://localhost:%s' % port
httpd.serve_forever()
def _cli(args):
"""egaia serve
Run a simple web server for viewing generated html files locally.
Usage:
egaia serve --help
egaia serve [ --port=PORT ] [ --browser=BROWSER ]
"""
PORT = 8000
if args['--port']:
PORT = int(args['--port'])
if args['--browser']:
utils.run([args['--browser'], 'http://localhost:%s/' % PORT])
serve(PORT)