项目配置

Sanic中加载应用配置的方法与Flask类似,不同点主要是配置项来源格式和配置项内容。Sanic的配置项可以通过Sanic实例中的.config属性来访问,该属性提供了.update()方法来从一个字典中更新配置项。Sanic中的配置项都是使用大写字母书写,单词之间使用连词符分隔开。

在默认情况下,Sanic会自动加载前缀为SANIC_环境变量中的配置内容,如果需要更换一个前缀,可以在实例化Sanic类时指定,例如:app = Sanic(load_env='WEBAPP_');如果不需要从环境变量中加载配置项,则可以将参数load_env设置为False来关闭自动加载功能。

sanic.config.Config类中提供了以下几个方法来手动加载配置项,可以通过Sanic实例中的.config属性来调用。

  • .from_envvar(环境变量名),从环境变量指定的配置文件中加载项目配置,这里只需要提供指定了配置文件的环境变量名。
  • .from_object(object),从指定对象中加载配置项,只会加载属性名全部为大写的属性。
  • .from_pyfile(filename),从指定Python文件中加载配置项,只会加载其中名称全部为大写字母的变量及内容。

Sanic的内建配置项要比Flask少很多,所有配置项可以见下表。

配置项默认值配置功能
REQUEST_MAX_SIZE100,000,000一个请求的最大字节数
REQUEST_BUFFER_QUEUE_SIZE100请求缓存队列长度
REQUEST_TIMEOUT60请求抵达超时秒数
RESPONSE_TIMEOUT60响应处理超时秒数
KEEP_ALIVETrue是否启用Keep-Alive功能
KEEP_ALIVE_TIMEOUT5TCP保持Keep-Alive的最长秒数
GRACEFUL_SHUTDOWN_TIMEOUT15.0强制关闭非空闲连接的秒数
ACCESS_LOGTrue是否允许记录访问日志
PROXIES_COUNT-1设置在Web应用之前放置的反向代理数量