| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- #!/usr/bin/env python
 
- # coding: utf-8
 
- import six
 
- import socket
 
- from contextlib import closing
 
- import webbrowser
 
- if six.PY2:
 
-     import SimpleHTTPServer
 
-     import SocketServer
 
- else:
 
-     import http.server as SimpleHTTPServer
 
-     import socketserver as SocketServer
 
- def is_port_avaiable(port):
 
-     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
-     result = sock.connect_ex(('127.0.0.1', port))
 
-     return result != 0
 
- def free_port():
 
-     if is_port_avaiable(11000):
 
-         return 11000
 
-     with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
 
-         s.bind(('', 0))
 
-         return s.getsockname()[1]
 
- def main():
 
-     PORT = free_port()
 
-     Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
 
-     httpd = SocketServer.TCPServer(("", PORT), Handler)
 
-     # There is a bug that you have to refresh web page so you can see htmlreport
 
-     # Even I tried to use threading to delay webbrowser open tab
 
-     # but still need to refresh to let report show up.
 
-     # I guess this is SimpleHTTPServer bug
 
-     webbrowser.open('http://127.0.0.1:%d' % PORT, new=2)
 
-     print("serving at port", PORT)
 
-     httpd.serve_forever(0.1)
 
- if __name__ == '__main__':
 
-     main()
 
 
  |