-if __name__ == "__main__":
- http_server = tornado.httpserver.HTTPServer(application)
- http_server.listen(address[1], address=address[0])
-
- print "Serving HTTP on %s:%d..." % http_server._socket.getsockname()
- loop = tornado.ioloop.IOLoop.instance()
- loop.start()
-
+http_server = HTTPServer(application)
+io_loop_pending = IOLoop.instance()
+
+if isinstance(address, InetAddress):
+ http_server.listen(address.port, address.host)
+ try:
+ sock = http_server._socket # tornado < 2.0
+ except AttributeError as e:
+ sock = http_server._sockets.values()[0]
+ print('Serving HTTP on %s:%d...' % sock.getsockname())
+ if opt.browser:
+ browser_addr = 'http://' + address[0] + ':' + str(address[1])
+ io_loop_pending.add_callback(lambda : webbrowser.open(browser_addr))
+elif isinstance(address, UnixAddress):
+ unix_socket = bind_unix_socket(address.path)
+ http_server.add_socket(unix_socket)
+ print('Serving HTTP on filesystem socket %r' % address.path)
+else:
+ log('error: unexpected address %r', address)
+ sys.exit(1)
+
+io_loop = io_loop_pending
+io_loop.start()
+
+if saved_errors:
+ log('WARNING: %d errors encountered while saving.\n' % len(saved_errors))
+ sys.exit(1)