【问题标题】:Running multiple flask servers and shutting them down individually运行多个烧瓶服务器并分别关闭它们
【发布时间】:2017-07-18 15:11:25
【问题描述】:

我正在实现几个烧瓶应用程序,它们都将在同一台服务器上运行。我担心当一个以上运行时关闭简单烧瓶服务器无法正常工作的推荐方法。 this snippet的关机方法是:

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()

我没有看到 func() 方法的定义位置,所以我可能遗漏了一些明显的东西,但是关闭方法如何知道要关闭哪些服务器?我想传递某种指定服务器的参数。有什么想法吗?

【问题讨论】:

  • 您是要关闭服务器,还是要禁用在同一服务器上运行的某些应用程序?您现在如何运行不同的应用程序? (func 是从 request.environ.get(..) 分配的,它从 werkzeug 检索关闭函数,然后调用它。)
  • 在我看来funcrequest.environ.get() 返回的可调用对象。

标签: python flask


【解决方案1】:

应用仅与为其提供服务的服务器交互。它不知道在其他地方运行的其他服务器。 request.environ('werkzeug.server.shutdown') 指向一个关闭处理请求的服务器的函数。

虽然 Werkzeug 开发服务器恰好具有上述允许关闭服务器的 hack,但它不是 WSGI 服务器的标准。开发服务器永远不应该在生产中使用。没有从应用程序中关闭 WSGI 应用程序(在本例中为 Flask)的标准方法。无论如何都不应该有这样做的理由。

从 Werkzeug 2.0 开始,werkzeug.server.shutdown 已弃用,并将在 Werkzeug 2.1 中删除。请参阅wait for value then stop server, after 'werkzeug.server.shutdown' is deprecated and removed 了解替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多