Введение
Ошибка Odoo JSONRPC возникает, когда запрос к Odoo по протоколу JSON‑RPC завершился сбоем. Этот протокол — основной канал связи для веб‑клиента Odoo и многих внешних интеграций.
В отличие от XML‑RPC, JSON‑RPC чаще применяется в следующих сценариях:
- Взаимодействие веб‑интерфейса
- Кастомные интеграции
- Headless‑реализации Odoo
- Синхронизация с внешними системами
Когда вызов JSON‑RPC завершается с ошибкой, Odoo формирует ответ с описанием проблемы — это и проявляется как ошибка JSONRPC.
RPC_ERROR: Odoo Server Error
Или это может быть структурированный JSON‑объект с информацией об ошибке в API‑ответе.
В этом материале объясняем, что означает ошибка JSONRPC в Odoo и как исправить её системно.
Что такое JSON-RPC в Odoo?
JSON‑RPC (JavaScript Object Notation Remote Procedure Call) позволяет клиентам вызывать методы Odoo по HTTP, передавая параметры в JSON‑формате.
Пример типового запроса JSON‑RPC выглядит так:
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": [
"database_name",
2,
"password",
"res.partner",
"search",
[[["is_company", "=", true]]]
]
},
"id": 1
}
Если на бэкенде возникает исключение, Odoo возвращает JSON‑объект с описанием ошибки.
Типичные причины ошибок Odoo JSONRPC
1. Ошибки аутентификации
Если в запросе переданы:
- Неверные учетные данные
- Неправильная база данных
- Истёкшая сессия
Odoo отклонит вызов.
Проблемы с авторизацией — одна из самых частых причин сбоев JSONRPC.
2. Неправильный вызов метода
Если в JSON‑поле указано:
- Несущетсвующая модель
- Несуществующий метод
- Неправильные аргументы метода
Бэкенд выбросит исключение, которое вернётся как JSONRPC‑ошибка.
3. Отсутствуют обязательные поля
Если при создании или обновлении пропущены обязательные поля, Odoo вернёт ошибку валидации в JSON.
Пример:
{
"name": "Order 001"
}
Если partner_id обязателен → возникнет ошибка.
4. Ограничения прав доступа
Если у API‑пользователя нет прав на действие, Odoo вернёт соответствующую JSON‑ошибку.
Часто такое случается в production, когда у интеграционных учёток ограниченные привилегии.
5. Неверные связанные идентификаторы
Если в поле Many2one приходит ID, которого нет в базе, бэкенд выбрасывает исключение.
Пример:
{
"partner_id": 99999
}
Если ID 99999 не существует → JSONRPC‑ошибка.
6. Нарушения ограничений базы данных
Типичные ошибки включают:
- Дублирование значения ключа, нарушающее уникальность
- Нарушение внешнего ключа
- Не NULL‑поле получает пустое значение
Эти ошибки также появятся в JSONRPC‑ответе.
7. Таймаут сервера или тяжёлая операция
Большие объёмы данных или массивные операции могут превысить лимиты по времени, особенно при высоких нагрузках.
Как устранить ошибку Odoo JSONRPC
Шаг 1 — Проанализируйте JSON‑ответ с ошибкой
В большинстве JSONRPC‑ответов содержатся:
- Тип ошибки
- Сообщение об ошибке
- Трассировка (traceback)
Внимательно изучите детали исключения на бэкенде.
Шаг 2 — Проверьте аутентификацию
Убедитесь в следующем:
- Имя базы указано верно
- ID пользователя или токен сессии действительны
- Пароль или API‑ключ корректны
- Учётная запись активна
Шаг 3 — Проверьте структуру полезной нагрузки (payload)
Перед отправкой запросов:
- Убедитесь, что включены все обязательные поля
- Проверьте корректность связанных ID
- Не отправляйте null в обязательные поля
- Контролируйте типы данных
Структурная валидация до отправки предотвращает многие ошибки во время выполнения.
Шаг 4 — Проверьте права доступа
Убедитесь, что у интеграционной учётной записи есть:
- Права на чтение
- Права на запись
- Права на создание
- Права на удаление
в зависимости от выполняемого действия.
Шаг 5 — Повторите действие через UI Odoo
Попробуйте воспроизвести ту же операцию вручную в интерфейсе Odoo.
Если в UI операция тоже падает — причина, скорее всего, связана с данными или правами.
Шаг 6 — Посмотрите логи сервера
Если JSON‑ответ слишком общий, изучите логи Odoo для полной трассировки исключения.
Как предотвратить ошибки JSONRPC
- Используйте выделенных API‑пользователей
- Проверяйте данные перед отправкой
- Логируйте request/response‑полезную нагрузку
- Реализуйте структурированную обработку ошибок в интеграции
- Избегайте отправки больших пакетов в одном запросе
- Тестируйте интеграции в staging‑окружении
В API‑ориентированных инсталляциях Odoo полезно вставить слой валидации и трансформации между внешними системами и Odoo — это существенно снижает число JSONRPC‑сбоев.
Как Dasolo укрепляет JSONRPC‑взаимодействие
Часто ошибки JSONRPC вызваны нестабильным управлением сессиями, кривой структурой запросов или отсутствием серверной валидации. Поскольку JSONRPC отвечает за большинство веб‑взаимодействий в Odoo, даже мелкие пробелы в конфигурации приводят к повторяющимся проблемам на фронтенде.
В Dasolo мы повышаем стабильность JSONRPC с помощью:
- Структурированной валидации входящих запросов
- Контролируемого управления сессиями
- Единых шаблонов обработки исключений
- Безопасного раскрытия эндпойнтов
- Подробного логирования API‑вызовов
Единая схема коммуникации снижает неожиданные ошибки времени выполнения и повышает надёжность платформы в целом.
Заключение
Ошибка «JSONRPC Error» в Odoo обычно сигнализирует о том, что на бэкенде произошло исключение, прервавшее диалог между клиентом и сервером. Несмотря на внешнюю общность ошибки, она почти всегда указывает на проблемы в формате запроса, аутентификации или бизнес‑логике на сервере.
Тщательная проверка структуры API‑вызовов, валидация входных данных и предсказуемая обработка ошибок помогают избежать повторяющихся сбоев JSONRPC. Продуманная коммуникационная прослойка делает взаимодействие с Odoo стабильным и эффективным.