Я устанавливаю микро-сервис с grpc в python с Ubuntu 18.04.3 (LTS) x64.
Я попытался изменить способ назначения аргументов. Re сгенерировал код из моего файла 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