我想创建一个简单的HTTP服务器,它可以处理大约1000 TPS并在python中遇到SocketServer模块。 HTTP服务器几乎每秒都会提供预期的事务,但它几乎一直使用90%的CPU,这会减慢其他进程的速度。
我使用 SocketServer 模块中的 TheadingTCPServer 来创建一个http服务器,实习生使用ThreadingMixIn为每个传入连接创建新线程。
任何人在python中遇到与SocketServer模块类似的问题?无论如何要解决这个问题?
我一直在使用的示例代码如下:
import SocketServer
import BaseHTTPServer
class Runner(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(self):
try:
req_hdr = self.headers
content_length = req_hdr.getheaders('content-length')
try:
body_length = int(content_length[0])
except:
body_length = 0
req = self.rfile.read(body_length)
if "test" in req:
resp_body = '''<?xml version="1.0" encoding="UTF-8" ?><Status>OK</Status>'''
else:
resp_body = '''<?xml version="1.0" encoding="UTF-8" ?><Status>Not OK</Status>'''
self.send_response(200, 'OK')
self.send_header("Content-Length", len(resp_body))
self.send_header("Content-Type", "text/xml")
self.end_headers()
self.wfile.write(resp_body)
except:
print "exception"
def log_message(self, format, *args):
return
def main():
server_address = ('', 8100)
httpd = SocketServer.ThreadingTCPServer(server_address, Runner)
httpd.serve_forever()
if __name__ == '__main__':
main()