包含gnmi proto规范和生成Python代码的Python包。
项目描述
gNMI Protobuf
此项目旨在成为用Python编写的gNMI项目的基石构建模块。
使用gRPC和Protocol Buffers构建Pythonic库和应用的过程已经被分割。这通常意味着开发人员需要复制proto
文件,使用protoc
从这些文件生成Python源代码,并在项目中使用它们。已经存在几个以这种方式构建的项目。虽然它们是功能性的,但这些可能难以重用或维护,通常导致过时的代码和没有版本。
gnmi-proto
基于betterproto和grpclib库已经进行的改进。在这里,我们提供版本化的包,其中包含从gNMI协议缓冲区生成的代码。
默认实现使用了betterproto的protoc
插件来生成干净的现代代码。此外,它还提供了一个gnmi.proto.legacy
模块,该模块暴露了使用内置Python生成器由protoc
生成的代码。
示例用法
客户端
以下代码期望服务器位于 127.0.0.1:9339
,使用测试配置。有关如何设置的信息,请参阅gNMI 目标服务器部分,在CONTRIBUTING.md。
使用 betterproto 和 grpclib
import gnmi.proto
import grpclib.client
async def main():
channel = grpclib.client.Channel(host="127.0.0.1", port=9339, ssl=None)
service = gnmi.proto.gNMIStub(
channel, metadata={"username": "admin", "password": "secret"}
)
response = await service.capabilities()
print(response.to_json(indent=2))
response = await service.get(
path=[gnmi.proto.Path(elem=[gnmi.proto.PathElem(name="interfaces")])],
)
print(response.to_json(indent=2))
if __name__ == "__main__":
import asyncio
asyncio.run(main())
使用纯 grpc
import gnmi.proto.legacy
import grpc
def main():
channel = grpc.insecure_channel("127.0.0.1:9339")
metadata = [("username", "admin"), ("password", "secret")]
service = gnmi.proto.legacy.gNMIStub(channel)
response = service.Capabilities(gnmi.proto.legacy.CapabilityRequest())
print(response)
response = service.Get(
gnmi.proto.legacy.GetRequest(
path=[
gnmi.proto.legacy.Path(
elem=[gnmi.proto.legacy.PathElem(name="interfaces")]
)
],
),
metadata=metadata,
)
print(response)
if __name__ == "__main__":
main()
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解安装包的更多信息。
源代码分发
gnmi-proto-0.1.0a4.tar.gz (38.0 kB 查看散列)
构建分发
gnmi_proto-0.1.0a4-py3-none-any.whl (43.8 kB 查看散列)
关闭
gnmi-proto-0.1.0a4.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 58bb4b93ac42df27e9d81a26ce5a02acafd83d96b4349a09d4f2c61124b95d2d |
|
MD5 | 3c453974ee583a9a0e3e2c738065dec4 |
|
BLAKE2b-256 | 1a9c71e6aba3824c3f28d124adf54bdb7a07e97adacca37b14a5be83b904ffc3 |
关闭
gnmi_proto-0.1.0a4-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f51db92686bb10aeb686fb102718a29462e11bdfecc6dd341722dcacd71248d9 |
|
MD5 | c2ae62ac724c1e2ea00b0f073949ce30 |
|
BLAKE2b-256 | 9b7a6dc159f0c32208e02032e257cef7bedfedcb1373c8ef77348b66825934e1 |