gRPC 是一個強大、高效能的遠端過程呼叫 (RPC) 框架,儘管不如 REST 常用,但在某些場景下提供了顯著的優勢。
此外,它與語言無關,可以在任何環境中運行,使其成為伺服器到伺服器通訊的理想選擇。
我不會深入研究它的完整解釋,但這裡是 gRPC 的一般連結。我將提供實作教學
讓我們想像一下,我們的 Go 是客戶端,但對於前端應用程式 React、Svelte 等來說,它是伺服器。
舉個例子,React 前端上傳一個文件,Go 處理它,但我們需要 Excel 的答案,我們將使用 GPT API。雖然可以用 Go 來完成,但另一方面 Python 有更多可以簡化我們生活的軟體包,例如 langchan_openai、pandas for excel 等等。
讓我們從安裝 gRPC 開始,最好是在您的 virtualenv .venv 中
接下來你應該在你的作業系統中安裝protocol buffer,可以按照這裡進行操作。
讓我們創建一個 proto 目錄,您將在其中存儲協議緩衝區文件,我將其命名為excel.proto並貼上此:
這個 gRPC 服務 ExcelService 允許客戶端透過傳送檔案名稱和內容來上傳檔案。伺服器以相同的文件內容進行回應。
對於 Go 來說,Python 中必須傳入 go_package ,不需要這一行。
vscode-proto3 是一個很好的擴展,如果你使用 VSCode,可以下載。
完成所有這些之後,你可以生成你的原型文件,我更喜歡它與 prot 目錄處於同一級別,為此運行以下命令:
協定 --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/excel.proto
如果成功應該產生兩個文件,如果需要大量調整,則可以選擇新增一個 Makefile 並將其定義為 proto + upper 命令。
我們建立一個連線來監聽 50051,它將成為我們的 Python 伺服器, &pb.FileRequest 是先前使用 proto 指令產生的,現在我們正在匯入方法。如果你跑步會收到?由於Python伺服器尚未建立。
由於 python 將充當伺服器,因此方法會略有不同,但本質上不需要套件欄位中的相同原型檔案。讓我們先建立一個沒有 gRPC 的基礎main.py,只是為了看一下 GPT 如何填充 excel 中的問題。
這是一個簡單的腳本,可以回答 Go 發送給我們的問題,但由於專用的 openai 庫,LOC 較少,這使得它變得更容易。
我們首先添加具有與上面相同的文件的原始目錄,可以按照討論刪除選項部分。最好在您的 virtualenv 中安裝 gRPC,然後按照我運行的原型生成安裝進行操作」
要和我的proto目錄在同一個lvl中記得加上__init.py!
文件已生成,讓我們繼續。
我們定義伺服器並新增 ExcelService 類,其中包含 proto 檔案產生的方法。因為我們按位元組接收文件,所以必須使用 io 位元組讀取器並開始進一步處理文件並填充第二列。
最後我們將返回☝️供我們的Go客戶端接收。
為了能夠在 python 中找到 proto 文件,但是你應該定義一個導出路徑
導出 PYTHONPATH=$PYTHONPATH:mnt/c/own_dev/gRPC/server/proto
您應該在 Go 用戶端獲得更新的 .xlsx 檔案。
在本文中,我們探討了在 Python 伺服器和 Go 用戶端之間設定 gRPC 通訊的基礎知識。透過利用 gRPC,我們建立了一種無縫方式,將 Excel 文件從 Go 應用程式傳送到 Python 伺服器,使用 OpenAI 的 GPT API 處理文件,並將修改後的文件傳回 Go 用戶端。
以上是Go 和 Python 之間的 gRPC 通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!