2. 配置
你的鼓励是我前进的动力,请为我点个赞吧!
(1) 基本的配置
任何系统的开发都是相当复杂的配置,配置文件一般都不会放到源码中,配置文件需要根据应用不同的需求进行相应的的配置。本小节将介绍一些基本配置。
Sanic将通过配置对象进行配置参数的保存,配置选项可以通过点运算进行参数修改。
app = Sanic('myapp') #创建对象
app.config.DB_NAME = 'appdb' #设置参数
app.config.DB_USER = 'appuser' # 设置参数
如上示例进行了数据库的基本配置,配置了数据库名字与数据使用者的名字。
(2)导入配置
如果所有配置使字典的形式进行保存,那么可以使用update进行一次性的全部设置。下面通过具体的例子进行说明,具体代码如下所示:
db_settings = {
'DB_HOST': 'localhost',
'DB_NAME': 'appdb',
'DB_USER': 'appuser'
}
app.config.update(db_settings)
以上代码使用update进行配置的更新。
注意:按照惯例只加载大写字母的配置的配置选项,所以在设置键时要大写字母。
Sainc不经提供了以上简单的配置文件的方法,还提供了其他的方法进行配置,下面将进行相关的讲述。
A. 从环境变量导入
任何以 “SANCI_”开头的变量,都会被应用于Sainc的配置。列如:设置“RANIC_REQUEST_TIMEOUT”将会被自动处理成REQUEST_TIMEOUT并导入Sanic的控制,开发者可以根据自己的喜好设置识别前缀,代码如下所示:
app= App(load_env=”MYAPP_”)
注意:所有字母要大写并要写出下划线。
Sanic同时提供了禁止从环境中导入变量的设置,具体代码如下:
app = Sanic(load_env=False)
B. 从对象中导入
Sainc模仿Flask的导入模式,可以通过类进行不断的导入,比如一些默认的配置。下面举例说明:
import myapp.default_settings
app = Sanic('myapp')
app.config.from_object(myapp.default_settings)
以上代码进行通过配置文件进行设置。当然,这个类由开发者自己的定义。
C. 从文件中导入
通常一般部署都不回从分布式文件中进行导入,因为这样做不够安全,所以一般配置都属于from_pyfile(path/to/file),有的时候可能开发者为了安全不在配置文件中指定文件路径,这种情况下可一下先进行环境变量声明,在运行时候进行指定文件。具体示例如下所示:
声名环境变量:
app = Sanic('myapp')
app.config.from_envvar('MYAPP_SETTINGS')
在命令行中进行指定和声明:
$ MYAPP_SETTINGS=/path/to/config_file python3 myapp.py
INFO: Goin' Fast @ http://0.0.0.0:8000
最后在指定的文件中进行配置:
# config_file
DB_HOST = 'localhost'
DB_NAME = 'appdb'
DB_USER = 'appuser'
(3) 创建配置变量
框架默认的项目配置参数:
名称 | 默认值 | 描述 |
---|---|---|
REQUEST_MAX_SIZE | 100000000 | 请求报文的字节数 |
REQUEST_BUFFER_QUEUE_SIZE | 100 | 请求流的缓存队列限制 |
REQUEST_TIMEOUT | 60 | 请求超时时间(秒) |
RESPONSE_TIMEOUT | 60 | 响应超时时间(秒) |
KEEP_ALIVE | True | 设置为False时将设置短链接 |
KEEP_ALIVE_TIMEOUT | 5 | 每个TCP链接保持的时间(秒) |
GRACEFUL_SHUTDOWN_TIMEOUT | 15.0 | 强制关闭非空链接的时间(秒) |
ACCESS_LOG | True | 是否开启登陆日志功能 |