1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /**
- 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()
- //}
- }
|