Replies: 6 comments 2 replies
-
|
Beta Was this translation helpful? Give feedback.
-
Я пытаюсь понять, как должно выглядеть API для получения информации об ошибках. У нас есть случаи вызовов списочных методов ( Очевидно, что успешные результаты должны возвращаться как результат функции, как возвращались раньше -- с целью обратной совместимости. А вот в чем возвращать ошибки? Какие есть варианты?
class ElementError:
description: str
# можно сразу пришпандорить helper
def extract_errors(results: list) -> list:
"""Достает ошибки из списка результатов, возвращенных после вызова списочного метода."""
return [x if isinstance(x, ElementError) for x in results] Но для сохранения обратной совместимости такое поведение должно включаться только по спецпараметру, примененному при вызове. Какие еще способы есть? |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Тесты показали. что при запросе батчем, где смешаны элементы, по которым сервер вернет как успешные, так и ошибочные ответы, от Битрикс24 приходит такой ответ, в котором невозможно понять, какой конкретно элемент вызвал ошибку. Запрашиваем: response = await bitrix.get_by_ID("crm.lead.get", [0, 1, 35943]) # первые два номера ошибочные, последний правильный Получаем ответ: {
"result": {
"result": {
"35943": {
"ID": "35943",
...
}
},
"result_error": [
{"error": "", "error_description": "ID is not defined or invalid."},
{"error": "", "error_description": "Not found"},
],
"result_total": [],
"result_next": [],
"result_time": {
"35943": {
"start": 1653126089.336395,
"finish": 1653126089.342316,
"duration": 0.005920886993408203,
"processing": 0.005886077880859375,
"date_start": "2022-05-21T12:41:29+03:00",
"date_finish": "2022-05-21T12:41:29+03:00",
"operating": 1.831031084060669,
}
},
},
"time": {
"start": 1653126089.306706,
"finish": 1653126089.342333,
"duration": 0.035627126693725586,
"processing": 0.01570296287536621,
"date_start": "2022-05-21T12:41:29+03:00",
"date_finish": "2022-05-21T12:41:29+03:00",
"operating": 1.831031084060669,
},
} Единственным местом, из которого бы можно было понять, какая ошибка относится к какому элементу, было бы это: "result_error": [
{"error": "", "error_description": "ID is not defined or invalid."},
{"error": "", "error_description": "Not found"}, но оно не содержит идентификаторов элементов. В итоге -- идея, высказанная выше:
не сработает. |
Beta Was this translation helpful? Give feedback.
-
Как получить содержимое ошибки, ответил тут: #163 |
Beta Was this translation helpful? Give feedback.
-
А можно дать контекст задачи? Откуда вообще берётся ограничение?
И какой код вызывает эту ошибку?
С уважением,
Алексей Лещенко
+7 985 222 79 49
…________________________________
От: amspeople ***@***.***>
Отправлено: Saturday, May 7, 2022 1:49:13 PM
Кому: leshchenko1979/fast_bitrix24 ***@***.***>
Копия: Subscribed ***@***.***>
Тема: [leshchenko1979/fast_bitrix24] Получить текст ошибки (Discussion #162)
RuntimeError мне возвращает такой текст ошибки: The server reply contained an error: {'order0': {'error': '', 'error_description': 'Для значения поля "КПП" превышена максимальная длина: 9.'}}
А можно получить просто Для значения поля "КПП" превышена максимальная длина: 9., а не словарь? Ну если только самому не парсить.
—
Reply to this email directly, view it on GitHub<#162>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AOK2LCLTXKZTOJY72XQ3TNDVIZDCTANCNFSM5VKH24CQ>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
RuntimeError мне возвращает такой текст ошибки: The server reply contained an error: {'order0': {'error': '', 'error_description': 'Для значения поля "КПП" превышена максимальная длина: 9.'}}
А можно получить просто Для значения поля "КПП" превышена максимальная длина: 9., а не словарь? Ну если только самому не парсить.
Beta Was this translation helpful? Give feedback.
All reactions