gRPC - Python Server 만들기

Step

1) pf 정보 가져오는 서비스를 python grpc 서버로 wrapping (이때 proto buf 정의)

Pre

$ pyenv versions
$ pyenv 3.7.0
$ source env/bin/activate
$ pip install --upgrade pip

Installation

$ python -m pip install grpcio
$ pip install grpcio-tools

Clone Example App

$ git clone -b v1.22.0 https://github.com/grpc/grpc
$ cd grpc/examples/python/helloworld

Run a gRPC App

$ python greeter_server.py

## 다른 탭에서
$ python greeter_client.py

Demo code

// pfservice.proto

syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";



// helloworld.poroto 복사해왔고
packagep lusfriend.service;


//
service PlusfriendService {
  // Sends a greeting
  rpc GetProfiles (ReqProfiles) returns (ResProfiles) {}
}


message Profile {
    uint32 id = 1;
    uint32 friend_count = 2;
}

// 프로필 조회하는 request 라서, id 리스트를 받을것이므로 Profile 메세지를 새로만들고 그것을 여러개 보내기로.
message ReqProfiles {
  repeated string ids = 1;
}

// The response message containing the greetings
message ResProfiles {
  repeated Profile profiles = 1;
}

Generate gRPC code

$ python -m grpc_tools.protoc -I../../protos --python_out=. --grpc_python_out=. ../../protos/helloworld.proto
  • grpc client 가 있어서 curl 처럼 테스트해볼 수 있음. (-> 에디 참고)

    • zshrc 에 #grpc_tools ? 머 그런거 있음/

  • reflection 무엇

----

gRPC 의 http request 클라이언트 찾아보기

  • aiohttp 등을 사용해야하지만,

  • 일단은 블록킹 되더라도 일반 리퀘스트로 만들어보자.

$ pip install requests

/server.py

ids = ','.join(request.ids)

Last updated