/** ocr服务调用 */ package main import ( "app.yhyue.com/BP/servicerd/proto" "context" "flag" "google.golang.org/grpc" "io/ioutil" "log" "os" ) //服务地址配置 var ( rdserver = flag.String("rd", "192.168.3.240:10021", "服务治理地址") balancetype = flag.Int("balance", 0, "负载策略 0=随机 1=服务器压力均衡 2=轮训占用") imagefile = flag.String("img", "/Users/taozhang/Downloads/demo.png", "需要识别的图片") ) func init() { flag.Parse() } // func checkError(err error) { if err != nil { log.Println(err.Error()) panic(err) } } // func ocr() { //图像文件读取 fi, err := os.Open(*imagefile) checkError(err) bs, err := ioutil.ReadAll(fi) checkError(err) //1.取得可用服务 conn, err := grpc.Dial(*rdserver, grpc.WithInsecure()) checkError(err) var client proto.ServiceClient client = proto.NewServiceClient(conn) repl, err := client.Apply(context.Background(), &proto.ApplyReqData{Name: "ocr", Balance: int32(*balancetype)}) checkError(err) log.Println("结果", repl.Addr, repl.ResourceId) //2.业务调用 conn_b, err := grpc.Dial(repl.Addr, grpc.WithInsecure()) checkError(err) defer conn_b.Close() demo_client := proto.NewOcrClient(conn_b) demo_repl, err := demo_client.Ocr(context.Background(), &proto.OcrRequest{ Image: bs, }) checkError(err) log.Println(demo_repl.Message) //3.如果是SEQ负载模式,在这里需要释放资源占用 if *balancetype == 2 { _, err := client.Release(context.Background(), &proto.StringReqData{Data: repl.ResourceId}) checkError(err) } } func main() { //for i := 0; i < 20; i++ { ocr() //} }