Python HTTP服务器-不使用HTTP模块创建
我可以创建一个HTTP服务器而不使用Python HTTP服务器-不使用HTTP模块创建,python,sockets,http,server,Python,Sockets,Http,Server,我可以创建一个HTTP服务器而不使用 python -m http.server [port number] 使用带有插座等的老式样式 最新的代码和错误 import socketserver response = """HTTP/1.0 500 Internal Server Error Content-type: text/html Invalid Server Error""" class MyTCPHandler(socketserver.BaseRequestHandler):
python -m http.server [port number]
使用带有插座等的老式样式
最新的代码和错误
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”不支持缓冲区接口是的,您可以,但这是一个糟糕的想法——事实上,即使
http.server
充其量也只是一个玩具实现
您最好编写任何您想要的web应用程序作为标准WSGI应用程序(大多数Python web框架都是这样做的——Django、Pyramid、Flask……),并使用Python现有的几十个生产级HTTP服务器中的一个来为其提供服务
uWSGI()是我个人的最爱,Gevent紧随其后
如果您想了解有关如何完成的更多信息,我建议您阅读CherryPy服务器()的源代码。虽然没有前面提到的uWSGI强大,但它是一个用纯Python编写的很好的参考实现,它通过线程池为WSGI应用提供服务。当然可以,像这样的服务器已经这样做了。
对于仅能执行HTTP/1.0获取请求并一次仅处理单个请求的简单测试服务器,一旦您了解了HTTP协议的基础知识,就不应该那么难了。但如果你对性能有一点在意,它很快就会变得复杂。你可能会。试一试,如果你遇到问题,问一个问题。我们不会为你做的。你可以,但为什么?如果你想制造一辆自行车,你不是从制造轮子开始的——你得到一个轮子,然后你在自行车上工作。如果你想做一个更好的轮子,你才开始做轮子。我想不知道从哪里开始。找不到任何不引用方法的帮助,因此一个起点就更好了,或者您正在询问如何在不使用
python-m
CLI帮助程序的情况下创建一个简单的HTTP服务器?然后看下面的例子。基本上是试图重新发明轮子。。。不使用HTTP.server模块的简单HTTP服务器在这种情况下,创建一个简单的TCP服务器,然后在其顶部创建一个最小的HTTP/1.0堆栈,该堆栈从接受的连接读取请求,直到获得\r\n\r\n
并发送回响应。然后关闭连接。它不快,但很简单。@CaseyJames22然后使用http
模块。或者你真的想实现所有的和你自己吗?这实际上是一个很好的练习来熟悉协议。过一段时间后,您可能会充分理解,为什么一个全面且性能良好的服务器要复杂得多,但您在将来调试HTTP问题时学到了很多:)当然,关于如何编写服务器的真正细节,您必须自己弄清楚,如果您不想使用http模块,这里是一个用Perl编写的小型服务器。请不要期望我们为您编写Python服务器,但是您可以从这个最小的Perl服务器学习一些基础知识。而且你一定要熟悉HTTP协议。