微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在研究如何用Python开发一个体面的Web应用程序。 由于我不想要一些高阶结构,所以我select了轻量级的Flask框架 。 时间会certificate这是否是正确的select。

所以,现在我已经build立了一个mod_wsgi的Apache服务器,我的testing网站运行良好。 但是,我想通过使网站自动重新加载py或模板文件中的任何更改来加速开发例程。 我发现网站的.wsgi文件中的任何更改都会导致重新加载(即使在Apacheconfiguration文件中没有WsgiScriptReloading On),但是我仍然需要手动生成它(即插入额外的换行符,保存)。 有什么办法,当我编辑一些应用程序的py文件如何导致重新加载? 或者,我期望使用IDE刷新.wsgi文件给我?

stream媒体服务器问题与gunicorn和烧瓶和Nginx

限制对login用户静态文件访问

我应该为Flask,uWsgiNginx分开容器吗?

对于非认静态位置,Flask Nginx静态文件问题

Nginx和Flask-socketio Websockets:活着但不是消息?

当前推荐的方式(Flask> = 0.11)是使用flask命令行工具。

http://flask.pocoo.org/docs/0.11/server/

例:

$ export FLASK_APP=main.py $ export FLASK_DEBUG=1 $ python -m flask run

或者用一个命令:

$ FLASK_APP=main.py FLASK_DEBUG=1 python -m flask run

我更喜欢python -m flask run而不是flask run因为前者也与virtualenv 。

如果你想要比认的( 5000 )添加 – 端口选项不同的端口。

例:

$ python -m flask run --port 8080

更多选项可用于:

$ python -m flask run --help

如果您正在讨论测试/开发环境,那么只需使用调试选项即可。 当代码改变发生时,它会自动重新加载烧瓶应用程序。

app.run(debug=True)

或者,从外壳:

$ export FLASK_DEBUG=1 $ flask run

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

在测试/开发环境中

werkzeug调试器已经有一个自动重新加载”功能可以通过执行下列操作之一来启用:

app.run(debug=True)

要么

app.debug = True

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

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

但是这不适合于生产环境。

生产环境

就我个人而言,我选择Nginx + uWsgi通过Apache + mod_wsgi出于几个性能的原因,而且还有配置选项。 触摸重新加载选项允许您指定一个文件/文件夹,这将导致uWsgi应用程序重新加载您新部署的烧瓶应用程序。

例如,您的更新脚本会将您最新的更改拉下来,并触及“reload_me.txt”文件。 你的uWsgi ini脚本(显然是由Supervisord保持的)在这个脚本中有这样一行:

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

我希望这有帮助!

如果你正在运行使用uwsgi看看python自动重载选项:

uwsgi --py-autoreload 1

示例uwsgi-dev-example.ini:

[uwsgi] socket = 127.0.0.1:5000 master = true virtualenv = /Users/xxxx/.virtualenvs/sites_env chdir = /Users/xxx/site_root module = site_module:register_debug_server() callable = app uid = myuser chmod-socket = 660 log-date = true workers = 1 py-autoreload = 1

site_root / __ init__.py

def register_debug_server(): from werkzeug.debug import DebuggedApplication app = Flask(__name__) app.debug = True app = DebuggedApplication(app,evalex=True) return app

然后运行:

uwsgi --ini uwsgi-dev-example.ini

注意:这个例子也启用了调试器。

我走这条路线来模仿生产尽可能与我的Nginx设置。 简单地运行它的内置web服务器后面的Nginx烧瓶应用程序将导致错误的网关错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐