[PATCH 1 of 3] py3: re-implement the BaseHTTPServer.test() function
Pulkit Goyal
7895pulkit at gmail.com
Thu Jul 14 09:05:07 UTC 2016
# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1468430122 -19800
# Wed Jul 13 22:45:22 2016 +0530
# Node ID c8da57d0799eadf41bd838c5c2e334bde0c830ae
# Parent e5b4d79a9140c3d90e9b6aa22070351b73ef2d4c
py3: re-implement the BaseHTTPServer.test() function
The function is changed in python 3, it does not use sys.argv now,
rather it parses the command line now. So the latest version of function is
re-implemented. One can look at https://hg.python.org/cpython/file/3.5/Lib/http/server.py#l1184
and https://hg.python.org/cpython/file/2.7/Lib/BaseHTTPServer.py#l590 to see the change.
diff -r e5b4d79a9140 -r c8da57d0799e tests/tinyproxy.py
--- a/tests/tinyproxy.py Sat May 21 15:23:21 2016 +0900
+++ b/tests/tinyproxy.py Wed Jul 13 22:45:22 2016 +0530
@@ -15,6 +15,7 @@
__version__ = "0.2.1"
import BaseHTTPServer
+import argparse
import os
import select
import socket
@@ -143,6 +144,19 @@
a.write(str(os.getpid()) + "\n")
a.close()
+def runserver(port=8000, bind=""):
+ server_address = (bind, port)
+ ProxyHandler.protocol_version = "HTTP/1.0"
+ httpd = ThreadingHTTPServer(server_address, ProxyHandler)
+ sa = httpd.socket.getsockname()
+ print("Serving HTTP on", sa[0], "port", sa[1], "...")
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ print("\nKeyboard interrupt received, exiting.")
+ httpd.server_close()
+ sys.exit(0)
+
if __name__ == '__main__':
argv = sys.argv
if argv[1:] and argv[1] in ('-h', '--help'):
@@ -158,4 +172,14 @@
del argv[2:]
else:
print("Any clients will be served...")
- BaseHTTPServer.test(ProxyHandler, ThreadingHTTPServer)
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--bind', '-b', default='', metavar='ADDRESS',
+ help='Specify alternate bind address '
+ '[default: all interfaces]')
+ parser.add_argument('port', action='store',
+ default=8000, type=int,
+ nargs='?',
+ help='Specify alternate port [default: 8000]')
+ args = parser.parse_args()
+ runserver(port=args.port, bind=args.bind)
More information about the Mercurial-devel
mailing list