Wstęp
Błąd Odoo XMLRPC pojawia się, gdy komunikacja między zewnętrzną aplikacją a Odoo zawodzi przy użyciu protokołu XML‑RPC. Ten mechanizm to jedno z podstawowych API Odoo, umożliwiające zdalne uwierzytelnianie oraz operacje na rekordach: od odczytu po tworzenie, aktualizację i usuwanie.
W przeciwieństwie do zwykłych błędów interfejsu, błędy XMLRPC najczęściej widoczne są w:
- logach integracji
- logach zewnętrznej aplikacji
- logach serwera (traceback)
- odpowiedziach API
Problemy te występują najczęściej tam, gdzie Odoo jest połączone z:
- platformami e‑commerce
- innymi systemami ERP
- systemami CRM
- aplikacjami szytymi na miarę
W tym materiale wyjaśniamy, co powoduje błędy XMLRPC w Odoo i jak je skutecznie rozwiązywać.
Czym jest XML‑RPC w Odoo?
XML‑RPC (Extensible Markup Language Remote Procedure Call) pozwala zewnętrznym systemom wywoływać funkcje Odoo przez HTTP.
Standardowy przebieg wywołania wygląda mniej więcej tak:
- uwierzytelnienie użytkownika
- pobranie identyfikatora użytkownika (UID)
- wywołanie metod modelu przez execute_kw
Przykład (Python):
import xmlrpc.client
url = "https://twoje-odoo.pl"
db = "nazwa_bazy"
username = "uzytkownik@przyklad.pl"
password = "haslo"
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]]]
)
Gdy którykolwiek krok zawiedzie, Odoo zwróci błąd XMLRPC.
Najczęstsze przyczyny błędów XMLRPC w Odoo
1. Błąd uwierzytelniania
Do najczęstszych powodów niepowodzenia należą:
- błędne hasło
- nieprawidłowa nazwa bazy
- konto użytkownika nieaktywne
W takim wypadku Odoo odrzuci próbę logowania. Typowy komunikat:
AccessDenied
2. Nieprawidłowa nazwa modelu lub metody
Jeżeli wywołasz:
models.execute_kw(db, uid, password, 'wrong.model', 'search', [])
Odoo zgłosi błąd, ponieważ taki model nie istnieje.
3. Niepoprawne pole lub parametr
Jeśli w ładunku znajduje się pole, którego nie ma w modelu:
{'non_existing_field': 'value'}
Odoo podniesie wyjątek backendu, który przełoży się na błąd XMLRPC.
4. Ograniczenia praw dostępu
Gdy użytkownik API nie ma uprawnień do operacji takich jak:
- odczyt
- zapis
- tworzenie
- usuwanie
Odoo zwróci wyjątek związany z dostępem.
To bardzo częsty problem w środowiskach produkcyjnych.
5. Naruszenia integralności danych
Przykładowe błędy:
- naruszenie ograniczenia unikalności
- błąd klucza obcego
- brak wymaganych pól
mogą pojawić się jako błędy XMLRPC.
6. Limit czasu serwera lub zbyt ciężkie żądanie
Operacje na bardzo dużych zbiorach mogą przekroczyć limity czasu.
Tworzenie rekordów hurtowo bez dzielenia na partie to częsta przyczyna.
Jak naprawić błąd XMLRPC w Odoo
Krok 1 – Sprawdź uwierzytelnienie
Zweryfikuj:
- nazwę bazy
- nazwę użytkownika
- hasło
- czy konto użytkownika jest aktywne
- czy użytkownik ma odpowiednie uprawnienia
Przetestuj najpierw samo uwierzytelnienie, zanim wywołasz metody obiektów.
Krok 2 – Zweryfikuj nazwy modelu i metody
Upewnij się, że:
- model istnieje w Odoo
- metoda jest dostępna i wywoływalna
- parametry odpowiadają oczekiwanemu formatowi
W razie potrzeby włącz tryb deweloperski i sprawdź nazwy modeli.
Krok 3 – Przejrzyj prawa dostępu
Sprawdź, czy użytkownik API należy do właściwych grup.
Kontroluj:
Ustawienia → Użytkownicy → Uprawnienia
Wykorzystuj dedykowane konto integracyjne zamiast konta osobistego.
Krok 4 – Zweryfikuj strukturę ładunku
Przed wysłaniem danych do Odoo:
- upewnij się, że zawarte są wszystkie wymagane pola
- zweryfikuj poprawność identyfikatorów relacyjnych
- unikaj przesyłania pustych lub null‑owych referencji
Walidacja struktury danych przed wysyłką istotnie zmniejsza liczbę błędów XMLRPC.
Krok 5 – Sprawdź logi serwera Odoo
Jeżeli komunikat błędu jest niejasny, zajrzyj do logów serwera po szczegółowy traceback.
Błąd widoczny po stronie integracji rzadko zawiera pełną diagnostykę.
Krok 6 – Stosuj dzielenie na partie przy dużych operacjach
Zamiast wysyłać tysiące rekordów w jednym wywołaniu, rozbij operacje na mniejsze partie.
To zmniejsza ryzyko błędów spowodowanych przekroczeniem czasu.
Jak zapobiegać błędom XMLRPC
- Używaj dedykowanego użytkownika API
- waliduj dane przed wysyłką
- loguj wszystkie żądania i odpowiedzi
- testuj integracje najpierw w środowisku staging
- unikaj bezpośrednich zmian w bazie danych
- implementuj właściwą obsługę wyjątków po stronie klienta
W uporządkowanych środowiskach integracyjnych warto wprowadzić warstwę walidacji i transformacji między systemami zewnętrznymi a Odoo — wiele błędów XMLRPC da się zatrzymać zanim trafią do produkcji.
Jak Dasolo zabezpiecza integracje XMLRPC
Błędy XMLRPC często wynikają z przestarzałych metod uwierzytelniania, niepoprawnie zbudowanych payloadów lub braku wstępnej walidacji. Ze względu na częste zastosowanie XMLRPC w starszych integracjach, nawet drobne rozbieżności szybko powodują powtarzalne awarie.
W Dasolo stabilizujemy środowiska XMLRPC poprzez wdrożenie:
- dedykowanych kont technicznych
- surowej walidacji payloadów
- jasnego mechanizmu uwierzytelniania
- kontrolowanego udostępniania metod
- ustrukturyzowanego logowania wywołań zewnętrznych
Dyscyplinowana warstwa integracyjna znacząco redukuje niestabilność XMLRPC w systemach produkcyjnych.
Podsumowanie
Błąd „XMLRPC Error” w Odoo oznacza, że zdalne wywołanie procedury zakończyło się niepowodzeniem — zwykle z powodu problemów z uwierzytelnieniem, nieprawidłowych danych lub wyjątków backendu. Choć komunikat może wyglądać technicznie, źródło problemu najczęściej leży w konstrukcji integracji lub braku walidacji żądań.
Systematyczne sprawdzenie przepływów uwierzytelniania, wprowadzenie walidacji żądań i właściwa konfiguracja uprawnień pozwalają uniknąć powtarzających się błędów XMLRPC. Dobrze zaprojektowana architektura API utrzymuje stabilną komunikację między Odoo a zewnętrznymi systemami na dłuższą metę.