litefs package

Build a web server framework using Python. Litefs was developed to implement a server framework that can quickly, securely, and flexibly build Web projects. Litefs is a high-performance HTTP server. Litefs has the characteristics of high stability, rich functions, and low system consumption.

Author: leafcoder Email: leafcoder@gmail.com

Copyright (c) 2020, Leafcoder. License: MIT (see LICENSE for details)

Subpackages

Submodules

litefs.config module

配置管理

支持多种配置来源和分层管理

class litefs.config.Config(config_file: str | None = None, **kwargs)[源代码]

基类:ConfigLoadersMixin, ConfigCryptoMixin

配置管理类

支持多种配置来源和分层管理: 1. 默认配置(内置) 2. 环境配置(如 config.production.yaml) 3. 本地配置(如 config.local.yaml) 4. 环境变量 5. 代码中的配置

配置优先级(从高到低): 代码配置 > 环境变量 > 本地配置 > 环境配置 > 默认值

DEFAULT_CONFIG: Dict[str, Any] = {'cache_backend': 'tree', 'cache_clean_period': 60, 'cache_expiration_time': 3600, 'cache_max_size': 10000, 'celery_backend': None, 'celery_broker': None, 'celery_config': None, 'config_encrypted_keys': [], 'config_env': None, 'config_file': None, 'config_secret_key': None, 'database_cache_table': 'cache', 'database_max_overflow': 20, 'database_pool_recycle': 3600, 'database_pool_size': 10, 'database_pool_timeout': 30, 'database_session_table': 'sessions', 'database_url': None, 'debug': False, 'default_page': 'index,index.html', 'error_pages_dir': None, 'file_cache_clean_period': 60, 'file_cache_expiration_time': 3600, 'host': 'localhost', 'i18n_cookie_name': 'locale', 'i18n_default_locale': 'en', 'i18n_enabled': False, 'i18n_locale_dir': 'locales', 'i18n_param_name': 'locale', 'i18n_supported_locales': ['en'], 'listen': 1024, 'log': './default.log', 'mail_default_from': None, 'mail_host': 'localhost', 'mail_max_retries': 3, 'mail_password': None, 'mail_port': 25, 'mail_template_dir': 'templates/email', 'mail_timeout': 30, 'mail_use_ssl': False, 'mail_use_tls': True, 'mail_username': None, 'max_request_size': 10485760, 'max_upload_size': 52428800, 'memcache_key_prefix': 'litefs:', 'memcache_servers': 'localhost:11211', 'memcache_session_key_prefix': 'litefs:session:', 'port': 9090, 'prometheus_enabled': False, 'prometheus_namespace': 'litefs', 'prometheus_path': '/metrics', 'redis_db': 0, 'redis_host': 'localhost', 'redis_key_prefix': 'litefs:', 'redis_password': None, 'redis_port': 6379, 'redis_session_key_prefix': 'litefs:session:', 'session_backend': 'memory', 'session_expiration_time': 3600, 'session_http_only': True, 'session_max_size': 1000000, 'session_name': 'litefs.sid', 'session_same_site': 'Lax', 'session_secure': None}
ENV_PREFIX: str = 'LITEFS_'
get(key: str, default: Any | None = None) → Any[源代码]

获取配置项

参数:
  • key -- 配置键

  • default -- 默认值

返回:

配置值

items() → List[tuple][源代码]

获取所有配置项

keys() → List[str][源代码]

获取所有配置键

set(key: str, value: Any)[源代码]

设置配置项

参数:
  • key -- 配置键

  • value -- 配置值

to_dict() → Dict[str, Any][源代码]

转换为字典

返回:

配置字典

update(**kwargs)[源代码]

批量更新配置

参数:

**kwargs -- 配置项

values() → List[Any][源代码]

获取所有配置值

litefs.config.load_config(config_file: str | None = None, env_prefix: str | None = None, **kwargs) → Config[源代码]

加载配置

参数:
  • config_file -- 配置文件路径

  • env_prefix -- 环境变量前缀(默认为 LITEFS_)

  • **kwargs -- 其他配置项

返回:

Config 对象

litefs.config.merge_configs(*configs: Config | Dict[str, Any]) → Config[源代码]

合并多个配置

参数:

*configs -- 配置对象或字典

返回:

合并后的 Config 对象

litefs.core module

Litefs 应用核心

Litefs 类通过 Mixin 组合各能力模块:

  • RoutingMixin 路由注册与 WebSocket 入口(app/routing_mixin.py)

  • ProtocolMixin WSGI / ASGI 协议适配与错误处理(app/protocol_mixin.py)

  • ExtensionMixin 中间件、插件、健康检查与数据库扩展(app/extension_mixin.py)

  • ServerMixin 服务器启动、关闭与热重载(app/server_mixin.py)

本文件仅保留应用装配逻辑(构造函数)与向后兼容的符号再导出, 对外接口(from litefs.core import Litefs, make_config, ...)保持不变。

class litefs.core.Litefs(**kwargs: Any)[源代码]

基类:RoutingMixin, ProtocolMixin, ExtensionMixin, ServerMixin

Litefs Web 应用

组合路由、协议适配、扩展能力与服务器生命周期, 构造函数负责装配配置、日志、会话、缓存、中间件、 路由、数据库与插件系统。

litefs.exceptions module

统一异常处理体系

提供完整的 HTTP 异常类和错误处理机制

exception litefs.exceptions.BadGateway(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

502 Bad Gateway - 网关错误

exception litefs.exceptions.BadRequest(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

400 Bad Request - 客户端请求语法错误

exception litefs.exceptions.CacheError(message: str, original_error: Exception | None = None)[源代码]

基类:Exception

缓存错误异常

exception litefs.exceptions.ConfigurationError(message: str, config_key: str | None = None)[源代码]

基类:Exception

配置错误异常

exception litefs.exceptions.Conflict(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

409 Conflict - 请求冲突

exception litefs.exceptions.DatabaseError(message: str, original_error: Exception | None = None)[源代码]

基类:Exception

数据库错误异常

class litefs.exceptions.ErrorHandler[源代码]

基类:object

错误处理器

用于注册和管理自定义错误处理函数

get_handler(status_code: int)[源代码]

获取错误处理函数

参数:

status_code -- HTTP 状态码

返回:

错误处理函数,如果没有则返回 None

handle(error: Exception, request_handler)[源代码]

处理错误

参数:
  • error -- 异常对象

  • request_handler -- 请求处理器

返回:

响应数据

register(status_code: int)[源代码]

注册错误处理函数装饰器

参数:

status_code -- HTTP 状态码

返回:

装饰器函数

exception litefs.exceptions.Forbidden(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

403 Forbidden - 服务器拒绝请求

exception litefs.exceptions.GatewayTimeout(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

504 Gateway Timeout - 网关超时

exception litefs.exceptions.Gone(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

410 Gone - 请求的资源已不存在

exception litefs.exceptions.HTTPException(status_code: int = 500, message: str | None = None, headers: List[tuple] | None = None, description: str | None = None)[源代码]

基类:Exception

HTTP 异常基类

所有 HTTP 异常都应该继承此类

参数:
  • status_code -- HTTP 状态码

  • message -- 错误消息

  • headers -- 响应头列表

  • description -- 详细描述

to_dict() → Dict[str, Any][源代码]

转换为字典格式

返回:

包含错误信息的字典

litefs.exceptions.HttpError

HTTPException 的别名

exception litefs.exceptions.InternalServerError(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

500 Internal Server Error - 服务器内部错误

exception litefs.exceptions.MethodNotAllowed(message: str | None = None, description: str | None = None, allowed_methods: List[str] | None = None)[源代码]

基类:HTTPException

405 Method Not Allowed - 请求方法不被允许

exception litefs.exceptions.NotAcceptable(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

406 Not Acceptable - 无法满足请求的 Accept 头部

exception litefs.exceptions.NotFound(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

404 Not Found - 请求的资源不存在

exception litefs.exceptions.NotImplemented(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

501 Not Implemented - 服务器不支持请求的功能

exception litefs.exceptions.PayloadTooLarge(message: str | None = None, description: str | None = None, max_size: int | None = None)[源代码]

基类:HTTPException

413 Payload Too Large - 请求实体过大

exception litefs.exceptions.RequestTimeout(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

408 Request Timeout - 请求超时

exception litefs.exceptions.RouteNotFound[源代码]

基类:Exception

路由未找到异常

exception litefs.exceptions.ServiceUnavailable(message: str | None = None, description: str | None = None, retry_after: int | None = None)[源代码]

基类:HTTPException

503 Service Unavailable - 服务不可用

exception litefs.exceptions.TooManyRequests(message: str | None = None, description: str | None = None, retry_after: int | None = None)[源代码]

基类:HTTPException

429 Too Many Requests - 请求过多

exception litefs.exceptions.Unauthorized(message: str | None = None, description: str | None = None, www_authenticate: str | None = None)[源代码]

基类:HTTPException

401 Unauthorized - 需要身份认证

exception litefs.exceptions.UnprocessableEntity(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

422 Unprocessable Entity - 无法处理的实体

exception litefs.exceptions.UnsupportedMediaType(message: str | None = None, description: str | None = None)[源代码]

基类:HTTPException

415 Unsupported Media Type - 不支持的媒体类型

exception litefs.exceptions.ValidationError(message: str, field: str | None = None, value: Any | None = None)[源代码]

基类:Exception

验证错误异常

litefs.exceptions.abort(status_code: int = 500, message: str | None = None, description: str | None = None, **kwargs)[源代码]

抛出 HTTP 异常

参数:
  • status_code -- HTTP 状态码

  • message -- 错误消息

  • description -- 详细描述

  • **kwargs -- 其他参数传递给异常类

抛出:

HTTPException -- HTTP 异常