【发布时间】: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()
【问题讨论】: