【问题标题】:Can python -m http.server be configured to handle concurrent requests?可以将 python -m http.server 配置为处理并发请求吗?
【发布时间】:2018-01-17 19:21:02
【问题描述】:

我有一个使用 http.server 提供的小型演示页面。我尝试与我的同事共享,但发现 http.server 在任何打开的连接上仍然被阻止,因此无法为并发用户提供服务。有没有办法运行 http.server 来处理并发连接?我在这里没有发现任何有用的东西:https://docs.python.org/3/library/http.server.html

【问题讨论】:

    标签: python http httpserver simplehttpserver


    【解决方案1】:

    IIRC 没有现有的配置选项,但如果您愿意,可以使用 socketserver.ThreadingMixin 扩展一个:

    import sys
    import socketserver
    import http.server
    
    
    class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
        daemon_threads = True
    
    
    port = int(sys.argv[1])
    server = ThreadedHTTPServer(('', port), http.server.SimpleHTTPRequestHandler)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
    

    ps:有a related python ticket

    【讨论】:

      【解决方案2】:

      您现在可以使用ThreadingHTTPServer

      类 http.server.ThreadingHTTPServer(server_address, RequestHandlerClass)

      此类与 HTTPServer 相同,但使用线程通过 ThreadingMixIn 处理请求。这对于处理 Web 浏览器预打开套接字很有用,HTTPServer 会无限期地等待。

      3.7 版中的新功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 2018-05-30
        • 2020-11-02
        • 2019-10-17
        • 2016-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多