今天在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...