Как исправить: 'TypeError: позиционные аргументы не допускаются' в python с grpc - PullRequest
0 голосов
/ 07 ноября 2019

Я устанавливаю микро-сервис с 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
...