开发者社区 > 云原生 > Serverless > 正文

阿里函数计算中python grpc client能连接fc上提供grpc服务的函数吗?

阿里函数计算中python grpc client能连接fc上提供grpc服务的函数吗?一直是有报错。
845b5dc612279c5ca3aba0ea15537f2d.png。go的client是可以正常连上,目前是python的连不上。

展开
收起
小小鹿鹿鹿 2023-11-21 22:37:50 39 0
4 条回答
写回答
取消 提交回答
  • 使用说明https://help.aliyun.com/zh/fc/configure-an-http-trigger-that-invokes-a-function-with-grpc-requests?spm=a2c6h.13066369.question.11.746e50dffCa8wu

    调用方式
    域名:支持使用子域名fcapp.run或自定义域名调用gRPC函数,不支持使用旧域名fc.aliyuncs.com调用gRPC函数。

    说明
    如果需要使用自定义域名,自定义域名需要配置请求路径与函数的映射关系。建议您将请求的路径配置为/*,可以让所有gRPC请求都转发到对应的gRPC函数中,gRPC函数会将请求路由到客户端定义的gRPC方法。

    端口:gRPC请求端口为8089。

    传输安全性
    为保证gRPC请求的安全性,函数计算线上环境仅支持使用TLS协议的客户端。否则,请求会报错rpc error: code = Unavailable desc = connection closed before server preface received。

    自定义域名支持使用自定义HTTPS证书,gRPC服务端不需要定义TLS证书验证,函数计算网关层会进行TLS验证。

    请求超时控制
    gRPC请求的最长超时时间不得超过函数的执行超时时间。执行超时时间默认为60秒,最长为86400秒。

    请求并发度控制
    gRPC请求受函数计算并发度的控制。一个gRPC请求被视为占用一个并发度。gRPC的协议基于HTTP/2,在函数计算中,对于一个函数实例而言,分配到这个函数实例的gRPC请求会复用同一条HTTP/2连接,则这条HTTP/2连接上的并发流就等于实例的并发度。您可以设置函数的单实例并发度来控制一个实例上的并发流数量。具体操作,请参见设置实例并发度。

    负载均衡
    函数计算支持将gRPC请求分发到不同的实例上,自动为gRPC请求做负载均衡。

    2023-11-22 16:08:53
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    是的,阿里云函数计算支持使用gRPC作为通信协议,并且可以在函数计算上提供gRPC服务。同时,你也可以使用Python gRPC客户端来连接到函数计算上的gRPC服务。
    要连接到函数计算上的gRPC服务,你需要知道该服务的端口号和主机名。你可以从函数计算控制台上获取这些信息。
    然后,你可以使用这些信息来创建一个Channel对象,这将是所有gRPC调用的基础。之后,你可以使用这个Channel对象来创建一个stub对象,用于调用gRPC服务中的方法。
    最后,你可以像调用普通Python函数一样调用stub对象的方法,gRPC会自动处理底层的网络通信和其他细节。
    具体来说,你可以参考阿里云官方文档或者gRPC的Python文档来进行操作。

    2023-11-22 14:28:36
    赞同 展开评论 打赏
  • 是的,Python的gRPC客户端可以连接到FC上提供的gRPC服务。根据您提供的错误信息,可能是由于以下原因导致的:

    1. 网络问题:请确保您的Python客户端和FC上的gRPC服务之间的网络连接正常。您可以使用ping命令测试网络连通性。

    2. 防火墙设置:检查您的防火墙设置,确保允许Python客户端访问FC上的gRPC服务。您可以在阿里云控制台中查看和管理防火墙规则。

    3. gRPC服务配置:确保您的FC上的gRPC服务已正确配置并运行。您可以在阿里云控制台中查看和管理gRPC服务的相关信息。

    4. Python客户端代码:检查您的Python客户端代码是否正确设置了gRPC服务地址、端口和服务名称。以下是一个简单的Python gRPC客户端示例:

    import grpc
    import your_grpc_pb2
    import your_grpc_pb2_grpc
    
    def run():
        # 替换为您的FC上gRPC服务的地址和端口
        channel = grpc.insecure_channel('fc-service-address:port')
        stub = your_grpc_pb2_grpc.YourServiceStub(channel)
    
        # 调用gRPC服务的方法
        response = stub.YourMethod(your_grpc_pb2.YourRequest())
        print("Response: ", response)
    
    if __name__ == '__main__':
        run()
    

    请根据您的实际情况修改上述代码中的your_grpc_pb2your_grpc_pb2_grpcYourServiceStubYourMethodYourRequest等部分。

    2023-11-22 11:41:19
    赞同 展开评论 打赏
  • 您再看看这个呢 应该是可以的:
    https://help.aliyun.com/zh/fc/configure-an-http-trigger-that-invokes-a-function-with-grpc-requests?spm=a2c4g.11174283.0.i1
    。此回答来自钉群阿里函数计算官网客户。

    2023-11-22 08:23:09
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    All in Serverless 阿里云核心产品全面升级 立即下载
    AIGC 浪潮之上,森马的 Serverless 实践之旅 立即下载
    极氪大数据 Serverless 应用实践 立即下载