main.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. ocr服务调用
  3. */
  4. package main
  5. import (
  6. "app.yhyue.com/BP/servicerd/proto"
  7. "context"
  8. "flag"
  9. "google.golang.org/grpc"
  10. "io/ioutil"
  11. "log"
  12. "os"
  13. )
  14. //服务地址配置
  15. var (
  16. rdserver = flag.String("rd", "192.168.3.240:10021", "服务治理地址")
  17. balancetype = flag.Int("balance", 0, "负载策略 0=随机 1=服务器压力均衡 2=轮训占用")
  18. imagefile = flag.String("img", "/Users/taozhang/Downloads/demo.png", "需要识别的图片")
  19. )
  20. func init() {
  21. flag.Parse()
  22. }
  23. //
  24. func checkError(err error) {
  25. if err != nil {
  26. log.Println(err.Error())
  27. panic(err)
  28. }
  29. }
  30. //
  31. func ocr() {
  32. //图像文件读取
  33. fi, err := os.Open(*imagefile)
  34. checkError(err)
  35. bs, err := ioutil.ReadAll(fi)
  36. checkError(err)
  37. //1.取得可用服务
  38. conn, err := grpc.Dial(*rdserver, grpc.WithInsecure())
  39. checkError(err)
  40. var client proto.ServiceClient
  41. client = proto.NewServiceClient(conn)
  42. repl, err := client.Apply(context.Background(), &proto.ApplyReqData{Name: "ocr", Balance: int32(*balancetype)})
  43. checkError(err)
  44. log.Println("结果", repl.Addr, repl.ResourceId)
  45. //2.业务调用
  46. conn_b, err := grpc.Dial(repl.Addr, grpc.WithInsecure())
  47. checkError(err)
  48. defer conn_b.Close()
  49. demo_client := proto.NewOcrClient(conn_b)
  50. demo_repl, err := demo_client.Ocr(context.Background(), &proto.OcrRequest{
  51. Image: bs,
  52. })
  53. checkError(err)
  54. log.Println(demo_repl.Message)
  55. //3.如果是SEQ负载模式,在这里需要释放资源占用
  56. if *balancetype == 2 {
  57. _, err := client.Release(context.Background(), &proto.StringReqData{Data: repl.ResourceId})
  58. checkError(err)
  59. }
  60. }
  61. func main() {
  62. //for i := 0; i < 20; i++ {
  63. ocr()
  64. //}
  65. }