gpt4 book ai didi

python - Plotly/Dash - Python 如何在一段时间后停止执行?

转载 作者:行者123 更新时间:2023-12-04 01:45:05 29 4
gpt4 key购买 nike

我想在一段时间后停止我的 Dash 程序的执行(当我关闭浏览器窗口时效果更好,尽管我怀疑这是否可行)。有没有办法通过python中断它?

我已经试过放一个

sys.exit() 

调用 app.run_server 后。据我所知很难
app.run_server

处于无限循环中,因此我永远不会到达 sys.exit()
if __name__ == '__main__':
app.title = 'foo'
app.run_server(debug=False)
sys.exit("Bye!")

最佳答案

由于 plotly 使用 flask 作为服务器。所以你的代码 sys.exit("Bye!") 实际上永远不会到达,因此你的服务器永远不会停止。
所以有两种方法可以停止你的服务器,

  • Ctrl + c 我假设你现在会这样做
  • 现在你也可以用代码来做,所以如果你真的需要在一段时间后停止代码,你应该停止 flask 服务器。要停止 Flask 服务器,您需要创建一个路由。因此,每当您点击该网址时,服务器就会停止。

  • 以下是 Flask 的代码,您需要将其转换为等效的 plotly 代码:
    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...'

    更新:
    对于 plotly,您可以按以下方式编写代码。
    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)

    关于python - Plotly/Dash - Python 如何在一段时间后停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55620642/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com