Python JSON RP C Пакетно, как обрабатывать несколько ошибок в ответе? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть небольшой python сервер и клиент, которые используют json rp c. Я пытаюсь группировать запросы и ответы.

Давайте проигнорируем код сервера, потому что это не важно. В клиенте у меня есть эта функция:

def invoke(self, method, params):
    """Invokes a remote function."""
    req = {
        'id': uuid.uuid1().hex,  # Helps to generate a random id using mac address and time component in hexadecimal
        'jsonrpc': '2.0',
        'method': method,
        'params': utils.createnamedparameters(method, params)  # creates named parameters
    }
    msg = self.send(json.dumps(req))
    i_res = json.loads(msg)
    if 'result' in i_res:  # If response contains result returns the result
        return i_res['result']
    else:
        if i_res['error']['code'] == -32601:  # Raises AttributeError if method doesn't exist
            raise AttributeError
        if i_res['error']['code'] == -32602:  # Raises TypeError if given parameters are invalid
            raise TypeError

Обратите внимание, что эта функция еще не изменена для поддержки пакетной обработки, это только то, что у меня есть до сих пор для единичных запросов, я просто подумал, что это может дать больше контекста для моей проблемы.

Я должен поднять эти исключения, потому что у меня есть куча юнит-тестов, которые я должен выполнить, и они ожидают, что они будут подняты.

У меня несколько вопросов: есть ли правило, как много ошибок в партии обрабатываются? Я забочусь только о первом? Нужно ли информировать клиента обо всех них? Какое правило или оно открыто для интерпретации?

Если я должен признать все ошибки, могу ли я как-нибудь вызвать несколько исключений? Я знаю, это звучит странно, и, вероятно, это плохая практика ...

...