首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BasicHTTPServer、SimpleHTTPServer和并发

BasicHTTPServer、SimpleHTTPServer和并发
EN

Stack Overflow用户
提问于 2010-03-16 23:21:27
回答 3查看 6.6K关注 0票数 5

我正在使用python、BasicHTTPServer和SimpleHTTPServer编写一个用于测试的小型web服务器。看起来它一次只能处理一个请求。有没有办法让它更快一点,而不是搞得太乱呢?基本上,我的代码看起来像下面这样,我想让它保持简单;)

代码语言:javascript
复制
os.chdir(webroot)
httpd = BaseHTTPServer.HTTPServer(("", port), SimpleHTTPServer.SimpleHTTPRequestHandler)
print("Serving directory %s on port %i" %(webroot, port) )
try:
 httpd.serve_forever()
except KeyboardInterrupt:
 print("Server stopped.")
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-16 23:39:12

您可以使用来自SocketServer的混合继承来创建自己的线程或派生类

代码语言:javascript
复制
import SocketServer
import BaseHTTPServer

class ThreadingHTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
    pass

这有它的局限性,因为它不使用线程池,受到GIT等的限制,但它可能会有一点帮助(相对较少的努力)。请记住,请求将由多个线程同时服务,因此一定要对服务请求过程中对全局/共享数据的访问(除非这些数据在启动后是不可变的)进行适当的锁定。

This SO question涵盖了同样的内容(不是特别详细)。

票数 9
EN

Stack Overflow用户

发布于 2010-03-17 00:58:07

您还可以看看CherryPy --它也非常简单,而且不需要额外的工作就可以有多个请求线程。尽管您现在的需求可能不大,但CP有很多很好的功能,将来可能会让您受益。

票数 1
EN

Stack Overflow用户

发布于 2010-03-16 23:49:28

根据您的需求,另一种选择可能是挂接Paste。不过,根据您的示例,这可能有些过头了。要放在工具箱里的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2455606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档