app.run 相关参数 & flask配置文件

要想接受外网的访问以及使用非默认端口访问,可以给 run 函数传入 hostport 两参数。

app.run(debug=True, host='0.0.0.0', port=8800)

这样就可以实现了,但是还存在一个问题,debug=True 是在开发环境使用,在生产环境是不合适的,那么怎么解决这一问题,那就是配置文件。

Flask对于配置文件,没有特别的位置约束和名字约束,约定俗成,配置文件放在项目目录下,名字叫 config.py

config.py

DEBUG = True

fisher.py

from flask import Flask
from config import DEBUGapp = Flask(__name__)def hello():# 另一种 基于类的视图(也叫即插视图)return 'Hello, lulu'app.add_url_rule('/hello/', view_func=hello)app.run(debug=DEBUG, host='0.0.0.0', port=8800)

要是配置文件的参数过多时,上述的方式不好,可以采用下面的方式:

app 核心对象提供了一个属性 config,可以把 config.py 模块中定义的参数导进来。

知识点:模块的路径

from flask import Flaskapp = Flask(__name__)
# 载入整个配置文件
app.config.from_object('config')  # from_object需要接收模块的路径def hello():# 另一种 基于类的视图(也叫即插视图)return 'Hello, lulu'app.add_url_rule('/hello/', view_func=hello)
if __name__ == '__main__':# 生产环境 nginx + uwsgi服务器# 访问配置参数 因为app.config是dict的子类app.run(debug=app.config['DEBUG'], host='0.0.0.0', port=8800)

关于 __name__ == '__main__'

如果我们在入口文件中增加了这样的一个判断之后,我们能够确保,if 里的语句,只在入口文件里执行。如果说我们当前的 fisher 这个文件,它不是作为入口文件直接被执行的,而是被其他的模块导入的,那么下面的这个 app.run() 是不会执行的,这个大家都是知道的。但是我的问题是具体到我们 flask 的项目里面,在入口文件里面增加这样的一个判断,然后再启动我们的 web 服务器,到底有什么具体的意义吗?

我们之前给大家讲到过了,我们在开发环境下,启动的 web 服务器是 flask 自带的一个非常简单的服务器,但是如果我们要把这个项目部署到生产环境的时候,我们通常是不会使用 flask 自带的这个服务器的。那么在生产环境下部署项目的时候,我们需要使用 nginx + uwsgi 这样的一个组合来部署项目,nginx 作为前置服务器用来接收我们浏览器发来的请求,接着会把这个请求转发给我们的 uwsgi 。在生产环境下,flask 这个项目的启动并不是像我们这样 python3.6 fisher.py 手动来执行的, 而是由 uwsgi 加载 fisher 这个模块来启动 flask 相关代码。那么在生产环境下面,fisher 这个文件就不再是入口文件,它只是一个被 uwsgi 加载的模块文件,所以说在生产环境下,app.run() 是根本就不会被执行的。那么我们可以反过来看一下,如果说我们没有了这个 if 判断,在生态环境下一旦加载了 fisher 这个文件之后,app.run() 就会执行,我们已经有了 uwsgi 作为我们的 web 服务器,而在这种情况下我们又启动了 flask 的内置的 web 服务器,这个是不可以的。但是如果我们加了这个 if 判断之后就不一样了,它可以保证我们在生产环境下不会启动 flask 自带的服务器。

踩坑

如果采用from_object方式载入配置文件,配置文件中配置项必须全大写,如果有类似这样 Debug = True 的写法(配置文件中),会忽略,不会载入,所以使用 app.config['Debug'] 时会报 KeyError 。但是打印 app.config['DEBUG'] 的值确是 False ,是因为 DEBUG 在 flask 中是默认参数,默认值是 False

app.run 相关参数 flask配置文件相关推荐

  1. flask学习笔记一:app.run

    1,Flask笔记 由于项目需求,所以需要学习一下Flask框架.一直以来对于这种前端设计类的框架总是没有什么特别大的学习兴趣,因此用这种记录笔记的方式来督促自己学习,也方便以后查询自己的学习进程,这 ...

  2. flask中 app.run(host='0.0.0.0', port=5000, debug=False) 不能用外网ip访问的解决办法

    pycharm 2018开启debug模式和修改host: 在Pycharm 2018中,如果想要开启debug模式和更改端口号,则需要编辑项目配置.直接在app.run中更改是无效的.示例图如下:  ...

  3. 关于flask的app.run()局域网不能访问的解决方法

    关于host 看了很多帖子说把 app.run() 改成 app.run(host='0.0.0.0', port=5000, debug='True') 但是往往很多电脑修改过都不行,那是因为端口没 ...

  4. flask 配置文件和学习资料

    原文:https://www.cnblogs.com/gaoya666/p/9174665.html 方式一:从文件中加载配置 1.创建一个配置文件,如:config.ini,在配置文件中写入你想要配 ...

  5. MySQL相关参数配置及性能优化

    MySQL及其优化 文章目录 MySQL及其优化 数据库相关概念 事务的四大特性ACID 影响mysql数据库性能的几个方面 数据库性能优化的重点 CentOS系统参数优化 内核相关参数(/etc/s ...

  6. php $app-run(),Thinkphp 5.x 应用启动 App::run()

    在上文加载完配置等一系列工作之后,进入App::run(),在run()方法中, 首先通过自动加载机制拿到 Request 的一个实例 接着 $config = self::initCommon()初 ...

  7. 【云原生】查看 Docker 容器启动命令和相关参数

    安装Python3 Linux 一般都默认安装了 Python 2,而 Python2 就附带了 pip 命令,但 2 版本的 pip 经常在安装包的时候出错,所以建议安装 Python3.使用如下命 ...

  8. MySQL-DB参数、内存、I/O、安全等相关参数设置

    文章目录 生猛干货 官方文档 服务器参数介绍 MySQL获取信息配置领 MySQL配置参数的作用域 内存配置相关参数 I/O相关配置参数 Innodb I/O 相关的配置 MyISAM I/O 相关的 ...

  9. rsync 相关参数

    rsync 相关参数 -v --verbose详细 -a --avchive归档模式,表示递归方式传输文件,并保持所有文件属性,等于-rlptgoD -z 传递过程中使用zip压缩传递,速度更快 -p ...

最新文章

  1. “平头哥”半导体公司
  2. 分享mac磁盘清理的方法
  3. jvm类加载机制总结
  4. 网络营销外包期间站长如何挖掘用户真实需求探索网络营销外包真谛
  5. 用递归方法对二叉树进行先序、中序和后序遍历
  6. Python之面向对象继承和派生
  7. 邻接表存储图利用BFS遍历
  8. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...
  9. java: cannot execute binary file问题的解决
  10. HightChar图表控件
  11. Kafka开发--C#生产和消费消息
  12. The Child and Toy
  13. 分布式相关面试题总结
  14. 一键批量检测微信是否被好友删除
  15. 微服务架构学习与思考(03):微服务总体架构图解
  16. 网吧客户信息查询c语言,网吧经营管理之客户定位
  17. epub 格式转换成 mobi
  18. 一寸照纯红色底图片_一寸照纯红色底图片
  19. 史上最超级KB的10个故事~你撑到第几个才发抖?
  20. springboot 集成beetl

热门文章

  1. stm32cubeide烧写程序_初学STM32CubeIDE
  2. 正则表达式匹配英文和法文
  3. 电信物联网平台,java后台对接电信北向应用,命令下发到设备
  4. 【数学逻辑思维】好玩的数独游戏(高难度版)——003
  5. TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略
  6. 每日学习-Java基础(十)接口和继承10(内部类)
  7. Replication Failed to register VRMS. Operation ID: bef61197-acf3-46ac-bffd-d457
  8. 26设计模式之建造者模式
  9. 书籍推荐《麦肯锡教我的写作武器》
  10. 在线客服系统解决方案:物流行业