Flask run 运行环境、调试器、重载器

5 篇文章 0 订阅
4 篇文章 0 订阅

目录


一、启动Flask

1. flask run

Flask通过依赖包Click内置了一个CLICommand Line Interface,命令行交互界面)系统。当我们安装Flask后,会自动添加一个flask命令脚

本,我们可以通过flask命令执行内置命令、扩展提供的命令或是我们自己定义的命令,可以执行falsk--help查看所有可用的命令。其中,

flask run命令用来启动内置的开发服务器。flask run命令运行的开发服务器会默认监听http://127.0.0.1:5000/,并开启多线程支持。

在开发时如果我们使用的IDE是PyCharm的话,那么使用PyCharm内置的运行功能会更方便。

2.自动发现程序实例

上面我们可以直接flask run运行程序是因为Flask会根据以下规则自动探测程序实例:

     从当前目录中寻找app.py和wsgi.py模块,并从中寻找名为app或application的程序实例

     从环境变量FLASK_APP对应的值寻找名为app或application的程序实例

因为我们的程序主模块是app.py,所以这里我们执行flask run命令会自动从当前目录中寻找程序实例。如果我们的程序主模块是其他名称,比如说是hello.py,

那么需要设置环境变量FLASK_APP,将包含程序实例的模块名赋值给这个变量。

    windows中使用 set FLASK_APP=hello 命令

    

 linux和mac中使用 export FLASK_APP=hello 命令

3.使服务器外部可见

我们在上面启动的web服务器默认是对外不可见的,在日常开发中会有同前端对接测试数据的情况,这时候我们要在flask run命令后添加

--host选项将主机地址设置为0.0.0.0使其对外可见

 这时服务器会监听所有外部请求,但是因为我们电脑没有公网IP,所有只能局域网内的其他电脑通过我们的内网IP访问,比如我的内网IP是192.168.1.188,

当局域网内其他用户访问http://192.168.1.188:5000/时,就会看到浏览器里显示“Hello Flask !”

Flask提供的web服务器默认监听的是5000端口,我们也可以在启动时传入--port参数来改变它

 当然,我们也可以通过环境变量FLASK_RUN_HOST和FLASK_RUN_PORT设置ip和端口

二、设置运行环境

开发环境(development enviroment

        开发环境是指我们在本地编写和测试程序时的计算机环境

生产环境(production enviroment

        生产环境指的是网站部署上线供用户访问时的服务器环境

根据运行环境的不同,Flask程序、扩展以及其他程序会改变相应的行为和设置。为了区分程序运行环境,

Flask提供了一个FLASK_ENV环境变量用来设置环境,默认为production,在我们开发时可以将其设为development,

这回开启所有支持开发的特性

 如果是通过pycharm运行的话,也可以在程序主模块中通过app.config['FLASK_ENV'] = development 设置

在 开发环境下,调试模式(Debug mode)将被开启,这时执行flask run命令启动程序会自动激活Werkzeug内置的调试器(debugger)

和重载器(reloader)。如果想单独控制调试器模式的开关,可以通过FLASK_DEBUG变量设置,1为开启,0为关闭。

1.调试器

Werkzeug提供的调试器非常强大,当程序出错时,我们可以在网页上看到详细的错误追踪信息,在调试错误时非常有用

调试器允许我们在错误页面上执行python代码,单击错误信息右侧的命令行窗口,会弹出一个窗口让我们输入PIN码,这个PIN码就是启动服务时

命令行窗口打印出来的 Debugger PIN。输入PIN码之后会打开一个包含代码上下文信息的python shell,我们可以利用它来进行调试

 2.重载器

当我们对代码做了修改之后,期望的行为是这些改动立刻作用到程序上。重载器的作用就是检测文件变动,然后重新启动开发服务器,当我们修改

了代码并保存之后,会在命令行看到如下输出:

 默认会使用Werkzeug内置的stat重载器,它的缺点是好点比较严重,而且准确性一般。我们可以安装另一个用于检测文件变动的python库Watchdog,

安装后Werkzeug会自动使用它来检测文件变动,pip install watchdog.

需要注意的是,如果项目中使用了css或js文件时,浏览器可能会缓存这些文件,从而导致对文件做出的修改不能立刻生效,可以crtl+F5或shift+F5执行

硬重载,即忽略缓存并重载页面


总结

学习中成长

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如追风去

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值