grpc 与 boto3 理解与使用

Posted 长虹剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grpc 与 boto3 理解与使用相关的知识,希望对你有一定的参考价值。

文章目录

gRPC

Python gRPC 入门

按照上面那个例子运行,下面主要讲讲遇到的问题和发现的一些事情

python 中运行 client 有问题,可以加入下面的代码解决

os.environ['http_proxy']=""
os.environ['https_proxy']=""

生成pb.py文件有以下方式

1) python -m grpc_tools.protoc -Itmp/ --python_out=tmp --grpc_python_out=tmp tmp/hello.proto
2) python -m grpc_tools.protoc -I./ --python_out=tmp --grpc_python_out=tmp hello.proto
3)python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./hello.proto

其中1)在import 时需要 tmp.xxx
3)很直接就是文件都在当前的目录,有些杂乱
2)这个需要把 hello.proto 放在 当前目录下,然后也能够和 1) 一样直接用(这里理解不了)

Boto3

还是会被 proxy 影响

# pip install boto3
import logging, os
import boto3
from botocore import UNSIGNED
from botocore.config import Config

os.environ['http_proxy']=""
os.environ['https_proxy']=""

s3_client_config = Config(signature_version=UNSIGNED)

endpoint_url = "https://xxx.com"

client = boto3.client("s3", endpoint_url=endpoint_url, config=s3_client_config)

bucket = "video-chj-v"  # 您申请的存储桶
objkey = "test-python.jpg"
fjpg = os.path.expanduser('~') + "/tmp/base64.jpg"

body = '0123456789'
with open(fjpg, "rb") as fp:
    body=fp.read()

# see: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_object
def put_demo():
    try:
        client.put_object(Bucket=bucket, Body=body, Key=objkey)
    except Exception as e:
        logging.error(e)


# see: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.get_object
def get_demo():
    try:
        response = client.get_object(Bucket=bucket, Key=objkey)
        print(response["Body"].read().decode("utf-8"))
    except Exception as e:
        logging.error(e)

# see: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.get_object
def get_meta_demo():
    try:
        response = client.get_object(Bucket=bucket, Key=objkey)
        print(response["ContentType"])
    except Exception as e:
        logging.error(e)

if __name__ == '__main__':
    put_demo()
    #get_demo()
    get_meta_demo()

以上是关于grpc 与 boto3 理解与使用的主要内容,如果未能解决你的问题,请参考以下文章

GRPC与 ProtoBuf 的理解与总结

理解grpc协议(json与protobuf的优劣)

将 Locust 与 Boto3 一起使用的示例

将 grpc 与 QtCreator 一起使用,未定义对 `grpc::...` 的引用

在Go中对gRPC+ProtoBuf与Http+Json进行基准测试

ASP.NET Core gRPC 健康检查的探索与实现