【问题标题】:Flask server not exiting when shutdown [duplicate]关闭时烧瓶服务器不退出[重复]
【发布时间】:2022-01-12 14:24:07
【问题描述】:

我有以下代码,它应该启动烧瓶服务器,运行 10 秒,然后将其关闭。

如果我启动它并让它运行,它会在所需的 10 秒后停止。

但是,如果我获取页面“http://localhost:5000/companies”,服务器将在 10 秒超时后打印“exit 1”消息,但在我再次获取页面之前不会继续进行。当我这样做时,服务器退出。

似乎在它获取的第一页之后,服务器停止轮询请求并忽略关闭标志,并进入阻塞模式。

如何正确关闭服务器?

import time
import threading

from flask import Flask

from werkzeug.serving import make_server

api = Flask("RestServer")

server = make_server("localhost", 5000, api)
thread = threading.Thread(target=server.serve_forever)


def start():
    print ("start")
    thread.start()


def stop():
    print("exit 1")
    server.shutdown()
    print("exit 2")
    thread.join()
    print("exit 3")


@api.route('/companies', methods=['GET'])
def get_companies():
    return "OK"


if __name__ == "__main__":
    start()
    time.sleep(10)
    stop()

【问题讨论】:

    标签: python flask


    【解决方案1】:

    为什么不使用quit() 而不是关机

    def stop():
        print("exit 1")
        quit()
        print("exit 2")
    

    【讨论】:

    • 我不能简单地退出程序,因为在我停止服务器后还有很多处理要做,而且当你有其他线程运行时,quit() 也不会停止程序.
    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多