fedora27 上使用grpc詳解

2021-08-22 07:26:13 字數 2813 閱讀 2371

今天在fedora上安裝並測試grpc,記錄以備日後查閱。

1、安裝grpc

過程很曲折,遇到的問題很多簡單記錄下:

pip install --upgrade pip

pip install grpcio

pip install protobuf

pip install grpcio-tools

yum -y install  protobuf-compiler protobuf-static protobuff protobuf-devel

dnf install protobuf-compiler.x86_64

pip install googleapis-common-protos

2、編寫proto檔案

syntax = "proto3";

package example;

service formatdata

}message data

3、編譯proto

python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. ***.proto

有可能會遇到字元轉換錯誤,如下方式解決:

vi /usr/lib64/python2.7/site-packages/grpc_tools/protoc.py 加入

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

4、編寫server 端:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import grpc

import time

from concurrent import futures

import test_pb2, test_pb2_grpc

_one_day_in_seconds = 60 * 60 * 24

_host = 'localhost'

_port = '4321'

class formatdata(test_pb2_grpc.formatdataservicer):

def doformat(self, data, context):

str = data.text

return test_pb2.data(text=str.upper())

def serve():

grpcserver = grpc.server(futures.threadpoolexecutor(max_workers=1))

test_pb2_grpc.add_formatdataservicer_to_server(formatdata(), grpcserver)

print "111111111111111111111111......."

grpcserver.add_insecure_port('[::]:50051')

print "222222222222222222222......."

grpcserver.start()

print "begin......."

try:

while true:

time.sleep(_one_day_in_seconds)

except keyboardinterrupt:

grpcserver.stop(0)

if __name__ == '__main__':

serve()

5、編寫client 端:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import grpc

import test_pb2, test_pb2_grpc

_host = 'localhost'

_port = '4321'

def run():

print "000000000000000000000000......."

#conn = grpc.insecure_channel('localhost', 50051)

#print "111111111111111111111111......."

#client = test_pb2_grpc.formatdatastub(channel=conn)

#print "22222222222222222222222......."

#response = client.doformat(test_pb2.data(text='hello,world!'))

#print("received: " + response.text)

with grpc.insecure_channel('localhost:50051') as channel:

print "111111111111111111111111......."

stub = test_pb2_grpc.formatdatastub(channel)

print "222222222222222222222222......."

response = stub.doformat(test_pb2.data(text='you'))

print("greeter client received: " + response.text)

if __name__ == '__main__':

run()

6、先將server端執行,然後在執行client端。

fedora 27 配置samba伺服器

我配置的時候全程在root裡面操作的 su 進入root使用者 配置samba 安裝samba service yum install samba.service 開始配置samba smbpasswd a u your username 設定登陸的使用者名稱和密碼,你可以執行 whoami 檢視你...

Fedora27 在筆記本上安裝雙顯示卡驅動

上週無聊,就研究了以往一直安裝不成功雙顯示卡的fedora,安裝系統的過程就不介紹了。安裝顯示卡方案用的是bumblebee 方案。當然。用了一天後,還是把fedora刪除了,老電腦,用這個版本實在太卡。滑鼠大概率移動位置,螢幕上的滑鼠圖示1 2s後才動,體驗極差,當然這和安裝這顯示卡方案沒關係,沒...

fedora27 更新yum源的解決方法

yum源核心有問題,查詢了網上關於yum源更新的問題,都說需要刪除 etc yum.repos.d,或者將其剪下到其他的資料夾裡面,但是都不太行。要國內源和原始國外源並存,需要安裝乙個選最快的源的程式 sudo dnf install yum fastestmirror 然後就可以安裝國內源了 cd...