当前位置: 首页 > 知识库问答 >
问题:

代码更改时自动重新加载python Flask应用程序

史骏祥
2023-03-14

我正在研究如何用Python开发一个像样的web应用程序。因为我不想让一些高阶结构妨碍我,所以我选择了轻量级Flask框架。时间会证明这是否是正确的选择。

所以,现在我已经用mod_wsgi设置了一个Apache服务器,我的测试站点运行良好。但是,我想通过在py或模板文件中进行任何更改时自动重新加载站点来加速开发例程。我看到网站的任何变化。wsgi文件会导致重新加载(即使在apache配置文件中没有启用WSGIScriptReloading),但我仍然必须手动生成它(即,插入额外的换行符,保存)。当我编辑一些应用程序的py文件时,是否有办法导致重新加载?或者,我希望使用IDE刷新数据。wsgi文件给我?

共有3个答案

郭琦
2023-03-14

werkzeug调试器已具有“自动重新加载”功能,可通过执行以下操作之一启用该功能:

app.run(debug=True)

或者

app.debug = True

如果需要,还可以使用单独的配置文件来管理所有设置。例如,我使用“设置”。py'带有“DEBUG=True”选项。导入这个文件也很容易;

app.config.from_object('application.settings')

然而,这不适合正式生产环境。

就我个人而言,我选择Nginx-uWSGI而不是Apache-mod_-wsgi是出于一些性能原因,同时也是出于配置选项。触摸重新加载选项允许您指定将导致uWSGI应用程序重新加载新部署的flask应用程序的文件/文件夹。

例如,您的更新脚本将您的最新更改向下拉,并触摸“重新加载”。txt文件。您的uWSGI ini脚本(显然由Supervisord保持)的某个地方有这样一行:

touch-reload = '/opt/virtual_environments/application/reload_me.txt'

我希望这有帮助!

蒯胜泫
2023-03-14

如果您谈论的是测试/开发环境,那么只需使用debug选项。当代码发生更改时,它将自动重新加载flask应用程序。

app.run(debug=True)

或者,从shell:

$ export FLASK_DEBUG=1
$ flask run

http://flask.pocoo.org/docs/quickstart/#debug-模式

锺离明煦
2023-03-14

当前推荐的方法是使用flask命令行实用程序。

https://flask.palletsprojects.com/en/1.1.x/quickstart/#debug-模式

例子:

$ export FLASK_APP=main.py
$ export FLASK_ENV=development
$ flask run

或在一个命令中:

$ FLASK_APP=main.py FLASK_ENV=development flask run

如果您想要不同于默认端口(5000)的端口,请添加--port选项。

例子:

$ FLASK_APP=main.py FLASK_ENV=development flask run --port 8080

更多选项可用于:

$ flask run --help

FLASK\u APP也可以设置为module:APPmodule:create\u APP而不是模块。py。看见https://flask.palletsprojects.com/en/1.1.x/cli/#application-发现一个完整的解释。

 类似资料:
  • 问题内容: 目前看来,对于sails.js应用程序中的任何代码更改,您都必须手动停止sails服务器并再次运行,然后才能看到更改。 我想知道在开发模式下运行时是否有任何方法可以在检测到代码更改时自动重新启动sails服务器? 问题答案: 您必须使用forever,nodemon或其他类似的观察器。 通过运行以下命令 永久 安装: 运行: 为了避免由于Sails写入文件夹而导致无限重启,您可以在项目

  • 问题内容: 我正在研究如何使用Python开发一个不错的Web应用程序。由于我不希望遇到一些高级结构,因此我的选择落在了轻量级的Flask框架上。时间会证明这是否是正确的选择。 因此,现在我已经使用mod_wsgi设置了Apache服务器,并且我的测试站点运行正常。但是,我想通过使我对py或模板文件进行的任何更改自动重新加载网站,从而加快开发流程。我看到站点的.wsgi文件中的任何更改都会导致重新

  • 问题内容: 最后,我将开发环境从runserver迁移到gunicorn / nginx。 将runserver的自动重载功能复制到gunicorn会很方便,因此当源更改时,服务器会自动重新启动。否则,我必须使用手动重新启动服务器。 有什么办法可以避免手动重启? 问题答案: 尽管这是一个古老的问题,但仅出于一致性考虑-因为19.0版本的gunicorn可以–reload选择。因此,不再需要第三方工

  • 问题内容: 最后,我将开发环境从runserver迁移到gunicorn / nginx。 将runserver的自动重载功能复制到gunicorn会很方便,因此当源更改时,服务器会自动重新启动。否则,我必须使用手动重新启动服务器。 有什么方法可以避免手动重启? 问题答案: 尽管这是一个老问题,但您需要知道自19.0版以来就可以选择。因此,现在不需要第三方工具。

  • 问题内容: 我正在使用Docker容器进行Django开发,并且该容器与Nginx一起运行Gunicorn。我希望代码更改能够自动加载,但我可以加载它们的唯一方法是使用docker- compose()进行重建。“构建”的问题在于它会重新运行我所有的pip安装。 我正在使用Gunicorn 标志,这显然应该可以完成我想要的操作。这是我的Docker配置文件: 我已经尝试了一些其他的泊坞窗命令(的,

  • 我有一个Asp。用于Web API开发的Net Core应用程序以及Angular 2(Types cript)中的客户端代码。 出于构建目的,我在使用WebPack的同时也在使用“WebPack dev server”。 目前我在“Package.Json”文件中有2个脚本, }, > 当我运行命令npm run start WebpackDevServer时,Web应用程序在端口8080可用,

  • 问题内容: 默认情况下,使用内置服务器()运行Flask应用程序时,它会监视其Python文件并在代码更改时自动重新加载该应用程序: 不幸的是,这似乎仅适用于* .py文件,而且我似乎没有找到任何将此功能扩展到其他文件的方法。最值得注意的是,当模板更改时,让Flask重新启动应用程序将非常有用。我已经迷失了多少次我不喜欢模板中的标记,却因为看不到任何更改而感到困惑,只是发现该应用程序仍在使用旧版本

  • 我正在使用IntelliJ IDEA15和tomcat开发一个AngularJS和Spring Boot应用程序,每当我对静态内容进行更改时,我总是要重新启动应用程序才能看到这些更改。 我找了一个类似的问题,我发现了这个: 启用html和javascript文件的IntelliJ热交换