【发布时间】:2020-01-29 14:28:00
【问题描述】:
我正在尝试在 python 中创建多线程 Web 服务器,但它一次只响应一个请求,我不知道为什么。你能帮帮我吗?
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
from time import sleep
class ThreadingServer(ThreadingMixIn, HTTPServer):
pass
class RequestHandler(SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
sleep(5)
response = 'Slept for 5 seconds..'
self.send_header('Content-length', len(response))
self.end_headers()
self.wfile.write(response)
ThreadingServer(('', 8000), RequestHandler).serve_forever()
【问题讨论】:
-
使用非阻塞套接字,您可以为数千个客户端提供服务。无需为每个请求创建线程。
-
@shiplu.mokadd.im 你能发帖吗..你的帮助将不胜感激
-
@Pilot 这里需要两件事。
select()和非阻塞。 Python 有一个 socket 库。 IBM 在使用 select() 进行套接字编程时得到了一些 good articles。 -
@shiplu.mokadd 感谢师父的宝贵意见
-
这是另一个类似 SimpleHTTPServer 的多线程 HTTP 服务器的好例子:MultithreadedSimpleHTTPServer on GitHub。
标签: python multithreading http webserver