Po uaktualnieniu mojego Django 1.6 aplikację Django 1.7 zacząłem się losowe błędy podczas pobierania danych z PostgreSQL:losowe błędy bazy danych z Django 1.7, uwsgi i PostgreSQL
DatabaseError: server sent data ("D" message) without prior row description ("T" message)
lost synchronization with server: got message type "�", length -1244613424
DatabaseError: lost synchronization with server: got message type "0", length 842674226
ProgrammingError: no results to fetch
ValueError: invalid literal for int() with base 10: 'feuj3f47jvsdv7tgnj43g63j'
Kiedy szybko otwarte 10 zakładki w przeglądarce, połowa kart ładuje się normalnie, połowa z nich otrzymuje błąd DB. Gdy odświeżam karty, w których wystąpiły błędy, ładują się normalnie.
Używam Django przez uwsgi i nginx, wersja psycopg2 to 2.5.4.
Ogólnie wygląda na to, że komunikacja z Postgres jest całkowicie zepsuta, a wyniki różnych zapytań mieszają się.
Edit:
Po kilku godzinach rozwiązywania problemów dowiedziałem się, co następuje:
Django 1.6 + uwsgi - działa
Django 1.7 + gunicorn - działa
Django 1.7 + uwsgi - nie robi działa, generuje błędy bazy danych. Tak więc wydaje się, że problem dotyczy właśnie kombinacji uwsgi i Django 1.7. Co jest dziwne, mam inny projekt Django 1.7 działający na tym samym serwerze z tymi samymi uwsgi i nie ma problemów.
Wszelkie pomysły?
(nie mam nic przeciwko przełączeniu na gunicorn, prawdopodobnie będzie musiał przejść w ten sposób, ale to wciąż interesujące, dlaczego tak się dzieje)
Aktualizacja 2: Dokładniejsza analiza pokazuje zupełnie szalone rzeczy dzieje wewnątrz Django, tak jak klucz podstawowy modelu jest zastąpiony bieżącym użytkownikiem id_sesji (to jest źródłem "nieprawidłowej literału dla int() z błędem base 10") i Django wysyłającym zapytania do DB "zapominając", aby określić klauzulę WHERE. Prawdopodobnie nazwałbym to jakąś korupcją pamięci.
Aktualizacja 3: Przełączyliśmy się z uwsgi na gunicorn i problemy już się skończyły. Wszystko działa świetnie. Prawdopodobnie wciąż szukam odpowiedniego rozwiązania.
'libpq' niedopasowane do' psycopg2'? W każdym razie jest to coś niskiego, w 'psycopg2' lub' libpq'. –
Moje stare (produkcja Django 1.6) i nowe (instalacje Django 1.7) korzystają z tego samego serwera, więc nie widzę, jak można mieć problemy z 'lipbq', podczas gdy inne nie. –
Ale masz rację, może' psycopg2 'jest źle skonfigurowany podczas kompilacji, muszę to sprawdzić –