灵活的服务定位器
项目描述
Python的灵活服务定位器。
svcs (发音为 services) 是一个Python的 依赖容器。它为您提供了一个集中注册类型/接口的工厂的地方,然后可以强制性地获取这些类型的实例,带有 自动清理 和 健康检查。
它适用于使用 依赖注入 或 服务定位 实现控制反转,而不需要全局状态、装饰器或函数签名篡改。
优点
- 消除大量重复的 模板 代码,
- 统一服务的 获取 和 清理,
- 提供完整的 静态 类型安全,
- 通过 松耦合 简化 测试,
- 通过 健康检查 提高 实时 内省 和 监控。
目标是使获取可插拔服务的代码最小化
from svcs.your_framework import svcs_from
def view(request):
db, api, cache = svcs_from(request).get(Database, WebAPIClient, Cache)
...或更少!
对于像Mypy这样的类型检查器来说,db
的类型是Database
,api
的类型是WebAPIClient
,cache
的类型是Cache
。当请求结束时,db
、api
和cache
将会自动清理——都是上下文管理器。
svcs与AIOHTTP、FastAPI、Flask、Pyramid和Starlette无缝集成。
虽然svcs也提供了静态类型的一等支持,但这完全是可选的,并且将始终如此。svcs也不会在运行时检查你的类型。它只会将你请求的类型转发给类型检查器。如果你没有使用类型检查器,这些信息将被忽略,没有任何运行时开销。
想了解更多请阅读Why?或者如果你感兴趣,可以观看这个简短的视频。
项目链接
发布信息
修复
- AIOHTTP:现在使用
aiohttp.web.AppKey
在应用程序中存储注册表。这是一个实现细节,不应该影响任何东西,但它修复了AIOHTTP 3.9及更高版本上的警告。
致谢
svcs由Hynek Schlawack编写,并按照MIT许可证分发。
开发得到了我的雇主Variomedia AG以及所有我的出色的GitHub Sponsors的友好支持。
Bestagon雷达标志由Lynn Root制作,基于Font Awesome图标。svcs最初是围绕wired(由Michael Merickel编写)的包装,并深受其影响。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
svcs-24.1.0.tar.gz (710.5 kB 查看哈希值)
构建分布
svcs-24.1.0-py3-none-any.whl (18.8 kB 查看哈希值)
关闭
svcs-24.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7419980475dd6b8e256e072c895c84cfe40d4da1ee944145f98724f2985dfd1f |
|
MD5 | 490d38add0c4bd915f9c354d665f817b |
|
BLAKE2b-256 | 0035d04e27a2c15dc948155eb4635338e9f2c66c5d0b68e1abee4eca887661f3 |
关闭
svcs-24.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f050f4a6fcf163aa3a5d5e17b66bbf5efa3ed2164018aebecd70fc27794ecf6b |
|
MD5 | 2563967325ecd6b87131412ec38172da |
|
BLAKE2b-256 | 5575795347abe56c4012fd511af35db80370f1461aa443546a83b32d65a19bbb |