Flask服务器不会在Windows中的Ctrl + C上停止

时间:2017-09-24 11:30:50

标签: python flask

我使用Visual Studio模板中的Flask创建了一个默认的基本Web服务器。 当我从命令提示符启动它时,它会显示"按Ctrl + C退出"。当我按Ctrl + C时,没有任何反应,服务器继续运行。

问题:有没有办法让Flask在广告时按Ctrl + C停止?

这是服务器启动的代码:

from os import environ
from myapp import app

if __name__ == '__main__':
    HOST = environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(environ.get('SERVER_PORT', '5555'))
    except ValueError:
        PORT = 5555
    app.run(HOST, PORT)

3 个答案:

答案 0 :(得分:1)

虽然这是一个奇怪的问题,你可以通过在linux命令行中运行此命令来杀死烧瓶:

sudo kill servicename

用服务PID替换servicename

你可以通过运行这个命令来获得它:

sudo ps -A | grep "python(x)" 

其中x是python版本

答案 1 :(得分:0)

您应该在新的命令提示符窗口中使用TASKKILL

答案 2 :(得分:0)

要停止在Windows上运行的Flask服务器,请执行以下操作:

  1. Ctrl + c
  2. 如果Flask仍在运行,请尝试: Ctrl + Break
  3. 如果Flask仍在运行 ,请打开命令终端或PowerShell并运行:
taskkill /f /im python.exe

您还可以选择要杀死的特定Python进程:

> tasklist /fi "imagename eq python.exe"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
python.exe                    1080 Console                    8     72,456 K
python.exe                   15860 Console                    8     73,344 K

> taskkill /F /pid 15860
SUCCESS: The process with PID 15860 has been terminated.
  1. 如果服务器仅在本地计算机上运行,​​则另一个选择是create an endpoint to kill the server
from flask import request
def shutdown_server():
    func = request.environ.get('werkzeug.server.shutdown')
    if func is None:
        raise RuntimeError('Not running with the Werkzeug Server')
    func()

@app.route('/shutdown', methods=['POST'])
def shutdown():
    shutdown_server()
    return 'Server shutting down...'