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 | 是否開啓登陸日誌功能 |