С помощью следующего кода я пытаюсь запустить сервер Flask в отдельном потоке, а затем уведомить основной поток о прекращении работы, когда сервер Flask получает запрос GET /shutdown
. Я делаю это, передавая threading.Event
объект в приложение через app.configs
и затем устанавливая это событие в маршруте /shutdown
.
app = Flask(__name__)
@app.route('/shutdown')
def shutdown():
# retrieve stop event from the Flask server configs, and trigger it
stop_event = app.config.get('stop_event')
stop_event.set()
return 'Shutting down...'
def start_server(stop_event):
# passing the stopping event to the Flask server
app.config['stop_event'] = stop_event
threading.Thread(name='Shutdown', target=app.run, kwargs={'host': '127.0.0.1', 'port': 5003}).start()
if __name__ == '__main__':
stop_event = threading.Event()
start_server(stop_event)
if stop_event.wait():
sys.exit(0)
Когда я запускаю curl http://127.0.0.1:5003/shutdown
, я получаю сообщение Shutting down...
, но событие никогда не запускается и основной поток все еще блокируется.