소개
Odoo XMLRPC 오류는 외부 시스템과 Odoo가 XML-RPC 프로토콜로 통신하는 과정에서 연결이나 요청 처리에 실패할 때 발생합니다. XML-RPC는 원격 애플리케이션이 Odoo에 로그인하고 레코드를 조회·생성·수정·삭제할 수 있게 해주는 표준 API 중 하나입니다.
일반적인 UI 오류와 달리 XMLRPC 오류는 주로 다음 위치에서 드러납니다:
- 통합(연동) 로그
- 외부 애플리케이션 로그
- 서버 트레이스백 로그
- API 응답
이러한 오류는 Odoo가 다른 시스템과 연결되어 있는 환경에서 자주 발생합니다. 예를 들어:
- 전자상거래 플랫폼 연동
- 다른 ERP 시스템과의 통합
- CRM 연동
- 커스텀 애플리케이션과의 연계
이 가이드는 Odoo에서 XMLRPC 오류가 왜 생기는지, 그리고 실무에서 어떻게 올바르게 해결하는지 설명합니다.
Odoo에서 XML-RPC란 무엇인가?
XML-RPC(Extensible Markup Language Remote Procedure Call)는 원격 시스템이 HTTP를 통해 Odoo의 메서드를 실행할 수 있도록 하는 방식입니다.
표준적인 호출 흐름은 다음과 같습니다:
- 사용자 인증
- 사용자 ID 확보
- models.execute_kw로 모델 메서드 호출
예시 (Python):
import xmlrpc.client
url = "https://your-odoo-instance.com"
db = "database_name"
username = "user@example.com"
password = "password"
common = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common")
uid = common.authenticate(db, username, password, {})
models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object")
models.execute_kw(
db, uid, password,
'res.partner', 'search',
[[['is_company', '=', True]]]
)
이 과정의 어디든 실패가 생기면 Odoo는 XMLRPC 오류를 반환합니다.
Odoo XMLRPC 오류의 흔한 원인
1. 인증 실패
자격증명이 잘못된 경우:
- 비밀번호 오류
- 데이터베이스 이름 불일치
- 사용자가 비활성화된 경우
Odoo는 인증을 거부합니다. 흔한 오류 메시지:
AccessDenied
2. 잘못된 모델명 또는 메서드명
다음처럼 호출하면:
models.execute_kw(db, uid, password, 'wrong.model', 'search', [])
해당 모델이 존재하지 않아 Odoo가 오류를 반환합니다.
3. 유효하지 않은 필드 또는 파라미터
페이로드에 존재하지 않는 필드를 포함하면:
{'non_existing_field': 'value'}
Odoo는 백엔드 예외를 발생시키며 이는 XMLRPC 오류로 나타납니다.
4. 권한(접근 권한) 제한
API 사용자가 다음 권한을 가지지 못하면:
- 조회(Read)
- 수정(Write)
- 생성(Create)
- 삭제(Delete)
Odoo는 접근 권한 관련 예외를 반환합니다.
이 문제는 운영 환경 통합에서 매우 흔합니다.
5. 데이터 무결성 위반
다음과 같은 오류들:
- 유니크 제약 위반
- 외래키 제약 에러
- 필수 필드 누락
이런 문제들도 XMLRPC 실패로 표출될 수 있습니다.
6. 서버 타임아웃 또는 과도한 요청
대량 처리 작업이 타임아웃 한도를 초과할 수 있습니다.
대량 레코드를 한 번에 생성하는 방식이 흔한 원인입니다.
Odoo XMLRPC 오류 해결 방법
1단계 – 인증 확인
다음 항목을 점검하세요:
- 데이터베이스 이름
- 사용자명
- 비밀번호
- 사용자 활성 여부
- 사용자의 접근 권한이 올바른지
객체 메서드를 호출하기 전에 별도 인증 테스트를 수행하세요.
2단계 – 모델과 메서드명 검증
다음 사항을 확인하세요:
- Odoo에 해당 모델이 실제로 존재하는지
- 호출하려는 메서드가 호출 가능한지
- 파라미터 형식이 기대값과 일치하는지
필요하면 개발자 모드를 켜서 모델명을 직접 확인하세요.
3단계 – 접근 권한 검토
API 사용자가 적절한 그룹에 속했는지 확인하세요.
다음 경로에서 권한을 점검하세요:
설정 → 사용자 → 접근 권한
개인 계정 대신 전용 통합(integration) 사용자를 사용하는 것이 좋습니다.
4단계 – 페이로드 구조 검증
Odoo에 데이터를 보내기 전에:
- 필수 필드가 포함되어 있는지 확인하고
- 관계형 ID가 올바른지 검증하며
- 빈 값이나 null 참조를 보내지 마세요
전송 전 구조 검증을 하면 XMLRPC 오류를 크게 줄일 수 있습니다.
5단계 – Odoo 서버 로그 점검
오류 메시지가 불분명하면 서버 로그에서 상세한 트레이스백을 확인하세요.
프론트엔드 통합 로그만으로는 전체 진단 정보를 얻기 힘든 경우가 많습니다.
6단계 – 대용량 작업은 배치 처리로 전환
수천 건을 한 번에 보내는 대신 배치로 나누어 전송하세요.
이렇게 하면 타임아웃 관련 XMLRPC 오류를 줄일 수 있습니다.
XMLRPC 오류 예방 방법
- 전용 API 사용자 사용
- 전송 전 데이터 검증 수행
- 모든 요청과 응답을 로깅
- 스테이징 환경에서 먼저 통합 테스트 수행
- 직접 데이터베이스 조작 금지
- 클라이언트 측에서 적절한 예외 처리 구현
외부 시스템과 Odoo 사이에 검증·변환 레이어를 넣으면 생산 환경에 도달하기 전에 많은 XMLRPC 실패를 예방할 수 있습니다.
다솔로(Dasolo)가 XMLRPC 통합을 안전하게 만드는 방법
XMLRPC 오류는 주로 구식 인증 방식, 잘못된 페이로드 형식, 또는 요청 전 검증 부족에서 옵니다. XMLRPC는 레거시 연동에서 많이 사용되므로 사소한 불일치가 반복적인 실패를 초래하기 쉽습니다.
다솔로에서는 XMLRPC 환경을 안정화하기 위해 다음을 시행합니다:
- 전용 기술 계정 구성
- 엄격한 페이로드 검증
- 명확한 인증 처리 방식
- 메서드 노출 통제
- 원격 호출을 위한 체계적 로깅
엄격한 통합 레이어는 운영 시스템에서 XMLRPC 불안정을 크게 줄여줍니다.
결론
Odoo의 “XMLRPC 오류”는 인증 실패, 잘못된 데이터, 또는 백엔드 예외로 인해 원격 프로시저 호출이 실패할 때 발생합니다. 표면상 기술적인 문제로 보이지만, 근본 원인은 대개 통합 구조나 요청 검증의 허점에 있습니다.
인증 흐름을 재검토하고, 요청 페이로드를 검증하며, 권한을 올바르게 설정하면 반복적인 XMLRPC 실패를 예방할 수 있습니다. 잘 설계된 API 아키텍처는 시간이 지나도 Odoo와 외부 시스템 간의 안정적인 통신을 보장합니다.