Sanic框架配置操作分析


Posted in Python onJuly 17, 2018

本文实例讲述了Sanic框架配置操作。分享给大家供大家参考,具体如下:

简介

Sanic是一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快。除了Flask之外,Sanic还支持异步请求处理程序。这意味着你可以使用Python 3.5中新的闪亮的异步/等待语法,使你的代码非阻塞和快速。

在上一篇《Sanic框架蓝图》中已经讲到,如何在Sanic中使用蓝图,接下来将介绍一下Sanic的配置,任何相当复杂的应用程序都需要配置,这些配置烘焙到实现的代码中,不同的环境或安装有可能不同。

加载配置

Sanic支持许多种加载的配置的方法,接下来简单介绍:

config:Sanic拥有config应用程序中对象属性的配置,配置对象只是一个可以使用点符号或者字典来修改的对象:

app = Sanic()
app.config.DB_NAME = "python"
app.config.DB_USER = "root"

由于配置对象还是一个字典,你可以使用它的update方法来一次设置多个值:

db_settings = {
  "DB_NAME":"python",
  "DB_USER":"root"
}
app.config.update(db_settings)

环境变量:任何使用SANIC_前缀定义的环境变量都将应用于sanic配置。例如,设置SANIC_REQUEST_TIMEOUT将被应用程序自动加载并输入到REQUEST_TIMEOUT配置变量中,你可以将不同的前缀传递给sanic:

app = Sanic(load_env="PYTHON_")

然后以PYTHON_为前缀的环境变量都将以去掉此前缀的方式被加载进来。例如,环境变量PYTHON_DB_USER:root将会在配置中以DB_USER:root出现。如果你想禁止从环境变量中加载,你可以将此值设置为False:

app = Sanic(load_env=False)

从一个对象:我们可以专门定义一个配置类或者模块来定义我们需要的配置选项和值,然后加载此类或模块

from config.Config import Config
app.config.from_object(Config)

从一个文件:我们可以专门顶一个文件来定义我们需要的配置选项和值,只需要提供该文件的路径即可

app.config.from_pyfile("/aa/bb/cc")

内置配置

Sanic除了可以自己定义配置,还有一些开箱即用的配置,如下所示:

变量 说明
REQUEST_MAX_SIZE 100000000 最大的请求大小(字节)
REQUEST_TIMEOUT 60 请求超时时间(秒)
RESPONSE_TIMEOUT 60 响应超时时间(秒)
KEEP_ALIVE True 保持活着
KEEP_ALIVE_TIMEOUT 5 保持活着超时时间

这几个预定义的值可以在修改配置时进行修改或覆盖

更多关于Python相关内容可查看本站专题:《Python入门与进阶经典教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python装饰器使用方法实例
Nov 21 Python
python 爬取微信文章
Jan 30 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python线程中的同步问题及解决方法
Aug 29 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python利用命名空间解析XML文档
Aug 10 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
Sanic框架蓝图用法实例分析
Jul 17 #Python
PyCharm设置SSH远程调试的方法
Jul 17 #Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 #Python
pycharm远程linux开发和调试代码的方法
Jul 17 #Python
Flask框架各种常见装饰器示例
Jul 17 #Python
详解基于django实现的webssh简单例子
Jul 17 #Python
Python爬虫之网页图片抓取的方法
Jul 16 #Python
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
Jquery练习之表单验证实现代码
2010/12/14 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
javascript 回调函数详解
2014/11/11 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
vue生命周期的探索
2019/04/03 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
超市创意活动方案
2014/08/15 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
学校运动会广播稿
2014/10/11 职场文书