This is a solution to the closure problem. Powered by python 3.
import os import threading import webbrowser from http.server import HTTPServer, SimpleHTTPRequestHandler def simple_http_server(host='localhost', port=4001, path='.'): server = HTTPServer((host, port), SimpleHTTPRequestHandler) thread = threading.Thread(target=server.serve_forever) thread.deamon = True cwd = os.getcwd() def start(): os.chdir(path) thread.start() webbrowser.open_new_tab('http://{}:{}'.format(host, port)) print('starting server on port {}'.format(server.server_port)) def stop(): os.chdir(cwd) server.shutdown() server.socket.close() print('stopping server on port {}'.format(server.server_port)) return start, stop
simple_http_server , which will return the start and stop functions
>>> start, stop = simple_http_server(port=4005, path='/path/to/folder')
which you can use as
>>> start() starting server on port 4005 127.0.0.1 - - [14/Aug/2016 17:49:31] "GET / HTTP/1.1" 200 - >>> stop() stopping server on port 4005
Levon Aug 14 '16 at 2:09 p.m. 2016-08-14 14:09
source share