У меня есть небольшой 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
Обратите внимание, что эта функция еще не изменена для поддержки пакетной обработки, это только то, что у меня есть до сих пор для единичных запросов, я просто подумал, что это может дать больше контекста для моей проблемы.
Я должен поднять эти исключения, потому что у меня есть куча юнит-тестов, которые я должен выполнить, и они ожидают, что они будут подняты.
У меня несколько вопросов: есть ли правило, как много ошибок в партии обрабатываются? Я забочусь только о первом? Нужно ли информировать клиента обо всех них? Какое правило или оно открыто для интерпретации?
Если я должен признать все ошибки, могу ли я как-нибудь вызвать несколько исключений? Я знаю, это звучит странно, и, вероятно, это плохая практика ...