【问题标题】:How to change and reload python code in waitress without restarting the server?如何在不重新启动服务器的情况下更改和重新加载女服务员中的 python 代码?
【发布时间】:2016-08-17 11:43:08
【问题描述】:

我正在使用服务员来提供 Web 应用程序内容。

waitress-serve --port=8000 myapp:application

在开发过程中,当我更改代码时,我不得不不断地重新启动服务员服务以查看我的更改。有没有一种标准的方法可以让我自动化?

【问题讨论】:

  • 如果您要更改 python 代码,则必须重新启动服务器。 HTML 代码将在下一个请求中更改
  • 你的应用程序是用Flask写的吗?那你可能想试试this snippet,它和waitress一起对我有用。除此之外,看看 pypi.python.org/pypi/ReloadWSGIgithub.com/loomchild/reload 。我还没有尝试过其中任何一个,但描述似乎适合用例。
  • @Dirk 你提到的那个 sn-p....链接坏了。

标签: python development-environment waitress


【解决方案1】:

我知道这是一个老问题,但我在尝试使用 Falcon 框架为我的 REST API 启用热重载功能时遇到了类似的问题。

Waitress 不监视文件更改,但您可以在其上使用hupper。很简单:

$ pip install hupper
$ hupper -m waitress --port=8000 myapp:application

它也适用于 Windows。

【讨论】:

    【解决方案2】:

    根据@Dirk 的评论,我在提到的sn-p 中找到了the archive.org link。我可以通过直接使用 Werkseug 来重新加载 Waitress。使用 Werkzeug 的装饰器 run_with_reloader 会导致应用程序在 Python 文件更改时重新启动。 (Werkzeug 在 Flask 中使用,因此应该可用)。

    此外,app.debug = True 行会导致 Flask 在模板文件发生更改时重新加载它们。因此,您可能需要同时考虑您的具体情况。

    import werkzeug.serving
    
    @werkzeug.serving.run_with_reloader
    def run_server():
        app.debug = True
        waitress.serve(app, listen='127.0.0.1:4432')
    
    if __name__ == '__main__':
        run_server()
    

    一旦我以这种方式设置了我的服务器,它就会在任何文件更改时自动重新加载服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多