codingecho

日々の体験などを書いてます

PythonでgRPCのリクエストをする

PythonでgRPCを扱う方法です。クライアント側だけの紹介です。

Protocol Buffersの定義ファイルを用意します。

crawl.proto

syntax = 'proto3';

package proto;

service Crawler {
    rpc Crawl(CrawlRequest) returns (CrawlResponse);
}

message CrawlRequest {
    string url = 1;
}

message CrawlResponse {
    string content = 2;
}

Protocol Buffersの定義ファイルを、Pythonのソースファイルにコンパイルします。

以下のコマンドを実行します。

$ protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/crawl.proto

$SRC_DIR: protoファイルがあるディレクトリ

$DST_DIR: コンパイルしたソースファイルの保存先

crawl_pb2.pycrawl_pb2_grpc.py のファイルが生成されます。

生成されたPythonのファイルを利用してgRPCのサーバーに対してリクエストします。

import grpc
from crawl_pb2_grpc import CrawlerStub
from import CrawlRequest

def crawl(url):
    channel = grpc.insecure_channel('localhost:50005')
    crawl_request = CrawlRequest(url=url)  # リクエストで送るデータの生成
    stub = CrawlerStub(channel)  
    result = stub.Crawl(crawl_request)  # リクエスト

    print(result.content)  # レスポンスのcontentを取得

参考