Flask框架中环境变量的配置

        在Flask项目的配置中都是通过app.config对象来进行配置的。比如要配置一个项目的SECRET_KEY,可以使用app.config['SECRET_KEY'] = "xxx"来进行设置,在Flask项目中,有四种方式进行项目的配置:

1、直接编码:

from flask import Flask

app = Flask(__name__)
app.config['SECRET_KEY'] = 'I love you'


@app.route('/')
def hello_world():
    # data = app.config['SECRET_KEY']
    data = app.config.get('SECRET_KEY')
    return 'Hello World! My SECRET_KEY is : ' + data


if __name__ == '__main__':
    app.run()

运行结果:

2、app.config是flask.config.Config的实例,而Config类是继承自dict,因此可以通过update方法:

from flask import Flask

app = Flask(__name__)
# app.config['SECRET_KEY'] = 'I love you'
app.config.update(
    DEBUF=True,
    SECRET_KEY='I love you'
)


@app.route('/')
def hello_world():
    # data = app.config['SECRET_KEY']
    data = app.config.get('SECRET_KEY')
    return 'Hello World! My SECRET_KEY is : ' + data


if __name__ == '__main__':
    app.run()

运行结果:

3、当配置文件非常多是时候,可以单独的把所有配置项放到一个配置文件中。通过app.config.from_object()方法进行加载,并且该方法既可以接收模块的的字符串名称,也可以模块对象。

# app.py
from flask import Flask

app = Flask(__name__)
# 方法一:通过模块字符串
# app.config.from_object('config')

# 方法二:通过模块对象
import config
app.config.from_object(config)


@app.route('/')
def hello_world():
    # data = app.config['SECRET_KEY']
    data = app.config.get('SECRET_KEY')
    return 'Hello World! My SECRET_KEY is : ' + data


if __name__ == '__main__':
    app.run()

# config.py
# 注意:配置项中的字母最好都是大写字母
SECRET_KEY = 'I love you'

运行结果:

4、也可以通过另外一个方法app.config.from_pyfile()进行加载,该方法传入一个文件名,通常是以.py结尾的文件,但也不限于只使用.py后缀的文件。

from flask import Flask

app = Flask(__name__)

# silent=True表示如果配置文件不存在的时候不抛出异常,默认是为False,会抛出异常
app.config.from_pyfile('config.py', silent=True)


@app.route('/')
def hello_world():
    # data = app.config['SECRET_KEY']
    data = app.config.get('SECRET_KEY')
    return 'Hello World! My SECRET_KEY is : ' + data


if __name__ == '__main__':
    app.run()

运行结果:

Flask项目内置了许多的配置项,所有的内置配置项可以详细通过官网进行查询:Configuration Handling — Flask Documentation (2.0.x)

以JSON_AS_ASCII为了进行演示:   【默认JSON_AS_ASCII=True】

示例代码:  【app.config['JSON_AS_ASCII'] = True】

from flask import Flask

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = True


@app.route('/')
def hello_world():
    return {'name': '张三'}


if __name__ == '__main__':
    app.run()

运行结果:

示例代码:【app.config['JSON_AS_ASCII'] = False】

from flask import Flask

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False


@app.route('/')
def hello_world():
    return {'name': '张三'}


if __name__ == '__main__':
    app.run()

运行结果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flask框架本身是单线程的,如果需要使用多进程,需要使用第三方库来实现。下面是一个使用`gunicorn`库实现多进程的示例: 1. 安装gunicorn:`pip install gunicorn` 2. 在Flask应用创建一个`wsgi.py`文件: ``` from my_flask_app import app if __name__ == "__main__": app.run() ``` 3. 启动gunicorn:`gunicorn --workers 4 wsgi:app` 这样就可以启动4个worker进程,来处理请求了。 ### 回答2: 在Flask框架使用多进程可以提高应用的并发处理能力和性能。以下是一个使用多进程的示例: 1. 首先,我们需要导入Flask和multiprocessing模块。 ```python from flask import Flask import multiprocessing ``` 2. 创建一个Flask应用。 ```python app = Flask(__name__) ``` 3. 定义一个处理请求的路由。 ```python @app.route('/') def hello(): return 'Hello, World!' ``` 4. 创建一个多进程的入口函数。 ```python if __name__ == '__main__': # 获取CPU核心数量 num_cpus = multiprocessing.cpu_count() # 创建进程池 pool = multiprocessing.Pool(processes=num_cpus) # 启动多进程,每个进程监听不同的端口 for i in range(num_cpus): port = 5000 + i pool.apply_async(app.run, kwds={'host': '0.0.0.0', 'port': port}) # 关闭进程池 pool.close() pool.join() ``` 在这个示例,我们通过使用Flask的`app.run`方法来启动一个Flask应用的实例。每个进程监听不同的端口,以便可以同时处理多个请求。通过使用`multiprocessing.Pool`创建一个进程池,并使用`cpu_count`方法获取CPU核心数量,将该数量作为进程池的大小。然后,通过`apply_async`方法启动多个进程,每个进程都运行`app.run`方法来启动Flask应用的实例。 最后,关闭进程池并等待所有进程完成。这样,我们就可以在Flask应用使用多进程来提高并发处理能力和性能。 ### 回答3: 在Flask框架使用多进程的示例可以通过使用Gunicorn来实现。 Gunicorn是一个支持多进程的WSGI HTTP服务器,可以用来在生产环境下运行Flask应用。它可以通过命令行使用或在Flask应用的代码配置。 下面是一个使用Gunicorn启动Flask应用的示例: 1. 首先,安装Gunicorn,可以使用pip命令进行安装:`pip install gunicorn` 2. 在Flask应用的根目录下创建一个wsgi.py文件,用于启动应用。wsgi.py文件的内容如下: ```python from your_flask_app import app if __name__ == "__main__": app.run() ``` 3. 在命令行使用以下命令来启动Flask应用: ```shell gunicorn -w 4 your_flask_app.wsgi:app ``` 其,-w参数指定了启动的进程数,这里设置为4,可以根据需要进行调整。 以上示例,Gunicorn会使用4个进程来同时处理请求,实现多进程的并发处理。这样可以提高应用的并发性能,使其能够同时处理更多的请求。 需要注意的是,使用多进程时,需要保证Flask应用是无状态的,即不依赖于全局变量等状态。这是因为每个进程都是独立的,它们之间无法共享状态。 另外,当使用多进程时,可能会遇到共享资源引起的问题,比如数据库连接池的使用。在这种情况下,可以考虑使用连接池来管理数据库连接,或者使用其他适合多进程环境的方式来处理共享资源的访问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值