使Python文件中的HTTP服务器继承与命令行版本相同的参数
我想在一个Python文件中启动一个HTTP服务器,该文件作为命令行工具继承参数 它们是:使Python文件中的HTTP服务器继承与命令行版本相同的参数,python,python-3.x,http,Python,Python 3.x,Http,我想在一个Python文件中启动一个HTTP服务器,该文件作为命令行工具继承参数 它们是: python3 -m http.server --help usage: server.py [-h] [--cgi] [--bind ADDRESS] [--directory DIRECTORY] [port] positional arguments: port Specify alternate port [default:
python3 -m http.server --help
usage: server.py [-h] [--cgi] [--bind ADDRESS] [--directory DIRECTORY]
[port]
positional arguments:
port Specify alternate port [default: 8000]
optional arguments:
-h, --help show this help message and exit
--cgi Run as CGI Server
--bind ADDRESS, -b ADDRESS
Specify alternate bind address [default: all
interfaces]
--directory DIRECTORY, -d DIRECTORY
Specify alternative directory [default:current
directory]
我想这会很有用,因为我需要在我自己的程序中使用其中三个参数(绑定、端口
和目录
),所以我可以直接继承它们,而不是重写代码。其中唯一一个我没有用的是cgi
选项,也许我可以删除它
我还需要消息:在0.0.0.0端口8000上提供HTTP服务(http://0.0.0.0:8000/)…
将被打印
但除此之外,我还想为处理get、post等定义自己的实现
下面是一个示例,说明我目前正在尝试复制这些参数,并在自己的HTTP服务器中打印消息:
from http.server import ThreadingHTTPServer, HTTPServer, BaseHTTPRequestHandler
class Handler(BaseHTTPRequestHandler):
# ... custom HTTP GET and POST implementations ...
def start(server_class=ThreadingHTTPServer, handler_class=Handler, bind='0.0.0.0', port=8000):
server_address = (bind, port)
httpd = server_class(server_address, handler_class)
print('Serving HTTP on ' + bind + ' port ' + port + ' (http://' + bind + ':' + port + '/) ...')
httpd.serve_forever()
if __name__ == "__main__":
if len(argv) == 2:
start(port=int(argv[1]))
else:
start()
谢谢大家! http.server的
。除非进行极端的修补(可能通过argparse
),否则无法继承它。http.server
参数处理是无效的。除非进行极端的修补(可能通过argparse
),否则无法继承它。查看代码,似乎\uuuu main\uuuu
only块甚至不在处理程序类中,我认为这意味着我必须修补整个文件。此外,它位于\uuuu main\uuuu
only块中的事实告诉我,这绝对不是要以任何方式继承的。看来我应该多看一眼源代码!不管怎样,我只要从\uuuu main\uuuu
唯一的块中复制出我想要的东西就行了。再次感谢你!查看代码,似乎\uuuu main\uuuu
only块甚至不在处理程序类中,我认为这意味着我必须修补整个文件。此外,它位于\uuuu main\uuuu
only块中的事实告诉我,这绝对不是要以任何方式继承的。看来我应该多看一眼源代码!不管怎样,我只要从\uuuu main\uuuu
唯一的块中复制出我想要的东西就行了。再次感谢你!