跳转到主要内容

灵活的服务定位器

项目描述

svcs logo showing a hexagon-shaped radar

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的类型是Databaseapi的类型是WebAPIClientcache的类型是Cache。当请求结束时,dbapicache将会自动清理——都是上下文管理器。

svcsAIOHTTPFastAPIFlaskPyramidStarlette无缝集成。

虽然svcs也提供了静态类型的一等支持,但这完全是可选的,并且将始终如此。svcs也不会在运行时检查你的类型。它只会将你请求的类型转发给类型检查器。如果你没有使用类型检查器,这些信息将被忽略,没有任何运行时开销。

想了解更多请阅读Why?或者如果你感兴趣,可以观看这个简短的视频。

Watch the video

项目链接

发布信息

修复

  • AIOHTTP:现在使用aiohttp.web.AppKey在应用程序中存储注册表。这是一个实现细节,不应该影响任何东西,但它修复了AIOHTTP 3.9及更高版本上的警告。

完整变更日志→

致谢

svcsHynek 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 查看哈希值

上传时间: Python 3

由以下支持