gpt4 book ai didi

python - 使 Python 文件中的 HTTP 服务器继承与命令行版本相同的参数

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:22 24 4
gpt4 key购买 nike

我想在继承参数的 Python 文件中启动一个 HTTP 服务器作为命令行工具。

它们是:

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]

我认为这很有用,因为我在自己的程序中需要其中三个参数(bindportdirectory),并且所以我可以继承那些而不是重写代码。其中唯一一个我没有用的是 cgi 选项,也许我可以删除它?

我还想要打印消息:Serving HTTP on 0.0.0.0 port 8000 (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 参数处理是 defined inline in its __main__ handling .除非进行极端修补(可能通过 argparse),否则无法继承它。

关于python - 使 Python 文件中的 HTTP 服务器继承与命令行版本相同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57246362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com