Setelah kehilangan banyak waktu untuk mencoba mendapatkan contoh dasar untuk pekerjaan berulang kali, saya akhirnya mendapatkannya.
Masalah:
- Buat kalkulator.py dengan dua fungsi, kuadrat dan pengganda.
- Menggunakan GRPC, buat file Proto yang sama.
- Tulis server, klien.
- Jalankan server, dan jalankan klien untuk mendapatkan hasil yang benar.
File Proto:
syntax = "proto3";
message Number {
int32 value = 1;
}
message NumList {
string name = 1;
repeated Number nums = 2;
}
service Calculator {
rpc Multiplier(NumList) returns (Number) {}
rpc Square(Number) returns (Number) {}
}
Sekarang bagian persegi itu mudah, tetapi untuk Pengganda, saya ingin meneruskan daftar Bilangan (seperti dalam tipe Angka seperti yang didefinisikan dalam file proto).
Masalahnya adalah dengan bidang yang berulang . Dan inilah solusi pamungkas singkatnya.
Solusinya:
import grpc
import calculator_pb2
import calculator_pb2_grpc
channel = grpc.insecure_channel('localhost:50051')
stub = calculator_pb2_grpc.CalculatorStub(channel)
num_list = calculator_pb2.NumList()
num_list.name = 'MyFirstList'
n1 = num_list.nums.add()
n2 = num_list.nums.add()
n3 = num_list.nums.add()
n1.value = 10
n2.value = 20
n3.value = 30
assert len(num_list.nums) == 3
response = stub.Multiplier(num_list)
print(response.value)
Fungsi Pengali Kalkulator (karena ini perlu ditampilkan):
def multiplier(numlist, name):
mul = 1
for num in numlist:
mul = mul * num.value
print(f'Result of list {name}')
return mul
Semoga ini bisa membantu seseorang. Semoga ini deskriptif sebagaimana mestinya.
append()
, misperson.id.append(1)
. Ini berlaku untuk bidang protobuf apa pun .repeated