我正在使用 Ubuntu 18.04.3 (LTS) x64 在 python 中使用 grpc 设置微服务。
我尝试改变分配参数的方式
从我的 protoc 文件重新生成代码
客户代码
class Cliente():
def IniciarCliente(self):
id = uuid.uuid1()
channel = grpc.insecure_channel('localhost:50051')
try:
grpc.channel_ready_future(channel).result(timeout=10)
except grpc.FutureTimeoutError:
sys.exit('Error al conectar con el servidor')
else:
conn = grpc_chat.ChatAdminStub(channel)
metadata = [('ip', '127.0.0.1')]
respuestaServidor = conn.Subscribirse(
structure.CrearUsuarioRequest(
structure.Usuario(
id.hex,
"coso",
True
)
)
)
if respuestaServidor:
print("Usuario subscrito:", respuestaServidor)
服务器代码
class Servidor(grpc_chat.ChatAdminServicer):
def Subscribirse(self, request, context):
metadata = dict(context.invocation_metadata())
print(metadata)
usuario = structure.Usuario(
id = request.id,
username = request.usuario,
estado = request.estado
)
usuario_server = Usuario(
id = request.id,
username = request.username,
estado = request.estado
)
self.clientes.append(usuario_server)
EXITO = "Usuario agregado"
return structure.Respuesta(respuesta = EXITO)
协议文件
//Se agrega al servidor
rpc Subscribirse(CrearUsuarioRequest) returns (Respuesta);
message Usuario {
string id = 1;
string username = 2;
bool estado = 3;
}
message CrearUsuarioRequest{
Usuario usuario = 1;
}
message Respuesta{
string respuesta = 1;
}
我收到以下错误
即使我改变参数的顺序,我似乎也没有改变。
(grpcenv) root@merixo-grpc-development:/grpc/chat# python Cliente.py
Traceback (most recent call last):
File "Cliente.py", line 34, in <module>
cliente.IniciarCliente()
File "Cliente.py", line 25, in IniciarCliente
True
TypeError: No positional arguments allowed