Dopo l'aggiornamento il mio Django 1.6 app per Django 1.7 Ho cominciato ad avere errori casuali durante il recupero dei dati da PostgreSQL:errori del database casuali con Django 1.7, uwsgi e 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'
Quando ho subito aperto 10 schede nel browser, metà delle schede si caricano normalmente, metà di esse riceve un errore DB. Quando aggiorno le schede in cui si sono verificati gli errori, vengono caricati normalmente.
Sto eseguendo Django tramite uwsgi e nginx, la versione di psycopg2 è 2.5.4.
Nel complesso sembra che in qualche modo la comunicazione con Postgres sia completamente interrotta e che i risultati di diverse query si mischino.
Edit:
Dopo diverse ore di risoluzione dei problemi ho scoperto quanto segue:
Django 1.6 + uwsgi - Lavori
Django 1.7 + gunicorn - Lavori
Django 1.7 + uwsgi - doesn funziona, genera errori nel database. Quindi il problema sembra essere in particolare con uwsgi e combinazione Django 1.7. Il che è strano, ho un altro progetto Django 1.7 in esecuzione sullo stesso server con lo stesso uwsgi e non ha problemi.
Qualche idea?
(io in realtà non mi importa di passare a gunicorn, probabilmente dovrà andare in questo modo, ma è comunque interessante perché sta succedendo questo)
Aggiornamento 2: Un esame più attento mostra cose completamente folli accadono all'interno di Django, come la chiave primaria di un modello che viene sostituita con session_id dell'utente corrente (che è l'origine di "letterale non valido per int() con errore di base 10") e Django che invia query a DB "dimenticando" per specificare la clausola WHERE. Probabilmente lo chiamerei corruzione di memoria di qualche tipo.
Aggiornamento 3: Siamo passati da uwsgi a gunicorn e ora i problemi non ci sono più. Tutto funziona alla grande. Probabilmente sto ancora cercando una soluzione adeguata.
'libpq' non corrispondente a' psycopg2'? È qualcosa di basso livello, in 'psycopg2' o in' libpq', comunque. –
Le mie vecchie installazioni (produzione Django 1.6) e nuove (sviluppo Django 1.7) condividono lo stesso server, quindi non riesco a vedere come si possono avere problemi con 'lipbq' mentre altri non lo fanno –
Ma hai ragione, forse' psycopg2 'non è configurato correttamente durante la compilazione, dovrò verificarlo –