关闭 plotly-dash 服务器
Shutting down a plotly-dash server
这是这个问题的后续问题:How to stop flask application without using ctrl-c。问题是我不理解接受的答案中的一些术语,因为我对此完全陌生。
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Dash Tutorials'),
dcc.Graph()
])
if __name__ == '__main__':
app.run_server(debug=True)
如何关闭它?我的最终目标是 运行 远程机器上的 plotly 仪表板,但我首先在我的本地机器上测试它。
我想我应该 "expose an endpoint"(不知道那是什么意思)通过:
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...'
我在哪里包含上面的代码?它是否应该包含在我展示的第一段代码中(即包含 app.run_server
命令的代码)?它应该是分开的吗?然后我需要采取哪些具体步骤来关闭服务器?
最后,无论我 运行 服务器在本地还是远程机器上,关闭服务器的步骤都一样吗?
非常感谢帮助!
链接答案werkzeug.server.shutdown
中的方法仅适用于开发服务器。创建一个视图函数,并分配一个 URL ("exposing an endpoint") 来实现这个关闭函数是一件很方便的事情,当与 gunicorn 这样的 WSGI 服务器一起部署时,它不会起作用。
也许这产生的问题多于它回答的问题:
我建议您熟悉 Flask 的 wsgi-standalone deployment docs。
然后 gunicorn deployment guide. The monitoring 部分可能有许多不同的服务监视器示例,您可以将其与 gunicorn 一起使用,允许您 运行 在后台运行应用程序,在重启时启动,等等.
最终,启动和停止 WSGI 服务器是服务监视器的责任,执行此操作的逻辑可能不应该编码到您的应用程序中。
在
的两种情况下什么都有效
app.run_server(debug=True)
和
app.run_server(debug=False)
代码中的任何地方是:
os.kill(os.getpid(), signal.SIGTERM)
(不要忘记导入 os 和信号)
SIGTERM 应该会导致应用程序完全退出。
这是这个问题的后续问题:How to stop flask application without using ctrl-c。问题是我不理解接受的答案中的一些术语,因为我对此完全陌生。
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Dash Tutorials'),
dcc.Graph()
])
if __name__ == '__main__':
app.run_server(debug=True)
如何关闭它?我的最终目标是 运行 远程机器上的 plotly 仪表板,但我首先在我的本地机器上测试它。
我想我应该 "expose an endpoint"(不知道那是什么意思)通过:
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...'
我在哪里包含上面的代码?它是否应该包含在我展示的第一段代码中(即包含 app.run_server
命令的代码)?它应该是分开的吗?然后我需要采取哪些具体步骤来关闭服务器?
最后,无论我 运行 服务器在本地还是远程机器上,关闭服务器的步骤都一样吗?
非常感谢帮助!
链接答案werkzeug.server.shutdown
中的方法仅适用于开发服务器。创建一个视图函数,并分配一个 URL ("exposing an endpoint") 来实现这个关闭函数是一件很方便的事情,当与 gunicorn 这样的 WSGI 服务器一起部署时,它不会起作用。
也许这产生的问题多于它回答的问题:
我建议您熟悉 Flask 的 wsgi-standalone deployment docs。
然后 gunicorn deployment guide. The monitoring 部分可能有许多不同的服务监视器示例,您可以将其与 gunicorn 一起使用,允许您 运行 在后台运行应用程序,在重启时启动,等等.
最终,启动和停止 WSGI 服务器是服务监视器的责任,执行此操作的逻辑可能不应该编码到您的应用程序中。
在
的两种情况下什么都有效app.run_server(debug=True)
和
app.run_server(debug=False)
代码中的任何地方是:
os.kill(os.getpid(), signal.SIGTERM)
(不要忘记导入 os 和信号) SIGTERM 应该会导致应用程序完全退出。