Поскольку plotly
использует flask
для сервера.Таким образом, ваш код sys.exit("Bye!")
фактически никогда не достигается, поэтому ваш сервер никогда не останавливается.Таким образом, есть 2 способа остановить ваш сервер,
Ctrl + c, который, как я полагаю, вы будете делать сейчас
Теперь вы можете сделать этоиспользуя код тоже, так что если вам действительно нужно остановить код через некоторое время, вы должны остановить колбу сервера.Чтобы остановить флеш-сервер, вам нужно создать маршрут.Поэтому, когда вы нажмете этот URL, сервер остановится.
Ниже приведен код для Flask, вам необходимо преобразовать его в эквивалентный кодовый код:
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...'
Обновление: Для графика вы можете написать код следующим образом.
import dash
import dash_core_components as dcc
import dash_html_components as html
from flask import request
print(dcc.__version__) # 0.6.0 or above is required
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
# represents the URL bar, doesn't render anything
dcc.Location(id='url', refresh=False),
dcc.Link('Navigate to "/"', href='/'),
html.Br(),
dcc.Link('Navigate to "/page-2"', href='/page-2'),
# content will be rendered in this element
html.Div(id='page-content')
])
def shutdown():
func = request.environ.get('werkzeug.server.shutdown')
if func is None:
raise RuntimeError('Not running with the Werkzeug Server')
func()
@app.callback(dash.dependencies.Output('page-content', 'children'),
[dash.dependencies.Input('url', 'pathname')])
def display_page(pathname):
if pathname =='/shutdown':
shutdown()
return html.Div([
html.H3('You are on page {}'.format(pathname))
])
if __name__ == '__main__':
app.run_server(debug=True)