【问题标题】:How to shut down python server如何关闭python服务器
【发布时间】:2017-08-03 10:48:14
【问题描述】:

使用此代码运行 python 服务器:

import os
from http.server import SimpleHTTPRequestHandler, HTTPServer                                                                                                                                   

os.chdir('c:/users/owner/desktop/tom/tomsEnyo2.5-May27')                                                                                                                                                                                      
server_address = ('', 8000)                                                                                                                                                                    
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)                                                                                                                                   
httpd.serve_forever()

如何让它停止?

【问题讨论】:

标签: python server


【解决方案1】:

您的问题不明确 - 如果您通过 shell 运行服务器,即 python myscript.py,只需按 crtl + C

如果你想用代码优雅地关闭它,你必须决定一些条件、点或异常来调用它关闭。您可以添加一个块并调用 httpd.shutdown() - 因为 HttpServer 本身就是一个 SocketServer.TCPSServer 子类:

第一个类 HTTPServerSocketServer.TCPServer 子类,并且 因此实现了 SocketServer.BaseServer 接口。它创建 并监听 HTTP 套接字,将请求分派给处理程序。

所以BaseServer 有一个方法shutdown(),因此作为子类 HttpServer 也有它。

例如:

import os
from http.server import SimpleHTTPRequestHandler, HTTPServer                                                                                                                                   

os.chdir('c:/users/owner/desktop/tom/tomsEnyo2.5-May27')                                                                                                                                                                                      
server_address = ('', 8000)   
try:
    httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)                                                                                                                                   
    httpd.serve_forever()
except Exception:
    httpd.shutdown()

有用的相关问题 -

【讨论】:

  • 从我的测试来看,except Exception 是不够的,但应该是except KeyboardInterrupt
【解决方案2】:

如果您可以终止整个进程,则可以从处理程序线程发送 SIGTERM 信号:

os.kill(os.getpid(), signal.SIGTERM)

【讨论】:

    【解决方案3】:

    只需使用 ^C (control+c) 即可关闭 python 服务器。

    【讨论】:

    • 它没有:(工作服务器仍在后台运行。您可以在浏览器中访问该站点进行测试。
    猜你喜欢
    • 2020-12-09
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多