django与grpc融合的过程
生活随笔
收集整理的這篇文章主要介紹了
django与grpc融合的过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、通過socket將grpc接收的數據傳輸到django中
# django+grpc+socket(服務端給客戶端發送文件) 配置過程# 將socket的服務端作為一個線程,放在grpc服務端下,一起啟動# 將socket的客戶端作為一個模塊,直接嵌入在websocket的while True循環之下接收數據并傳輸到頁面端二、直接融合
django+grpc配置過程# 首先利用data.proto生成兩個文件,放在python安裝目錄包下(即Lib--》site-packet下)# 將grpc的服務端作為一個線程,方法websocket下。如下:
# class ServerGreeter(data_pb2_grpc.dataServicer): # def serving(self, request, context): # print('serving...',datetime.datetime.fromtimestamp(time.time())) # # logging.info('serving...') # data_64 = base64.b64decode(request.cmd) # data_str=data_64.decode() # q.put(data_str) # return data_pb2.data_reply(values="ok") # # def grpc_connect(): # server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) # # 在服務器中添加派生的接口服務(自己實現了處理函數) # data_pb2_grpc.add_dataServicer_to_server(ServerGreeter(), server) # # 添加監聽端口 # myname = socket.gethostname() # myip = socket.gethostbyname(myname) # server.add_insecure_port('127.0.0.1' + ':' + '9001') # print('myip:', myip) # # 存儲數據線程 # # t = threading.Thread(target=data_manage, args=()) # # t.start() # # # 發送數據給web前端線程 # # t1 = threading.Thread(target=send_data, args=()) # # t1.start() # server.start() # try: # while True: # time.sleep(60 * 60 * 24) # except KeyboardInterrupt: # server.stop(0) # @accept_websocket # def echo(request): # if not request.is_websocket():#判斷是不是websocket連接 # try:#如果是普通的http方法 # message = request.GET['message'] # return HttpResponse(message) # except: # return render(request,'index.html') # else: # for message in request.websocket: # t = threading.Thread(target=grpc_connect, args=()) # t.start()調試經驗:
# 一般不關閉socket # 遇到異常不處理可用pass # 定位到While True:進行調試 # 啟動客戶端,調試服務端 # 啟動服務端,調試客戶端?
總結
以上是生活随笔為你收集整理的django与grpc融合的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: plotloss记录
- 下一篇: Python操作文件,报FileNotF