gpt4 book ai didi

Python HTTP Server - 在不使用 HTTP 模块的情况下创建

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:30 25 4
gpt4 key购买 nike

我可以在不使用的情况下创建一个 HTTP 服务器吗

python -m http.server [port number]

使用带有 socket 等的老派风格。

最新代码和错误...

import socketserver

response = """HTTP/1.0 500 Internal Server Error
Content-type: text/html

Invalid Server Error"""

class MyTCPHandler(socketserver.BaseRequestHandler):
"""
The RequestHandler class for our server.

It is instantiated once per connection to the server, and must
override the handle() method to implement communication to the
client.
"""


def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
self.request.sendall(response)

if __name__ == "__main__":
HOST, PORT = "localhost", 8000
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()

TypeError: 'str' 不支持缓冲区接口(interface)

最佳答案

是的,你可以,但这是一个糟糕的想法——事实上,即使 http.server 充其量也只是一个玩具实现。

您最好编写任何您想要的 Web 应用程序作为标准 WSGI 应用程序(大多数 Python Web 框架都这样做——Django、Pyramid、Flask ......),并使用数十种生产级 HTTP 之一来提供它Python 的服务器。

uWSGI ( https://uwsgi-docs.readthedocs.org/en/latest/ ) 是我个人最喜欢的,Gevent 紧随其后。

如果您想了解有关它是如何完成的更多信息,我建议您阅读 CherryPy 服务器的源代码 (http://www.cherrypy.org/)。虽然不如前面提到的 uWSGI 强大,但它是一个用纯 Python 编写的很好的引用实现,它通过线程池为 WSGI 应用程序提供服务。

关于Python HTTP Server - 在不使用 HTTP 模块的情况下创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566762/

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