Domanda

Di recente ho pubblicato un'app Django dal vivo. Abbiamo creato l'app in un sottodominio di gestione temporanea sul server. Quando sono diventato live, ho copiato i file del sottodominio di gestione temporanea sul sito principale, creato un database di gestione temporanea e indirizzato il vecchio sito di gestione temporanea sul nuovo database di gestione temporanea (lasciando il nuovo sito attivo puntato sul database originale). Questo è su mod_python in Apache.

Ho creato impostazioni SESSION_COOKIE_NAME uniche per entrambi i siti e ho impostato SESSION_COOKIE_DOMAIN su " .sitename.com " per il sito live e Nessuno per il sito di staging.

Il problema che stiamo riscontrando è che gli utenti nell'amministratore live stanno apportando modifiche che (sembra) vengano salvate sul sito di gestione temporanea. Gli utenti vengono inoltre disconnessi dal sito di amministrazione "in modo casuale" durante le richieste.

C'è qualcosa che sto chiaramente facendo di sbagliato qui? SESSION_COOKIE_DOMAIN dovrebbe essere " www.sitename.com " per limitarlo poiché il sottodominio si trova in " staging.sitename.com " ;? Ho lasciato indietro le informazioni sulla vecchia sessione nel database ora in diretta (ho eseguito ./manage.py pulito ed eliminato tutte le sessioni dal database in tempo reale prima che questo problema venisse risolto)?

Grazie

È stato utile?

Soluzione

Abbiamo riscontrato questo problema nelle ultime settimane. C'erano un paio di posti in cui questo poteva sovrapporsi.

1) Stai eseguendo interpreti Python separati? Esistono alcuni modi per configurare mod_python in modo che i thread non si calpestino l'un l'altro. I punti chiave qui sono fornire un ServerName distinto (in questo caso, i domini staging.sitename.com e www.sitename.com ), oltre a fornire un distinto Impostazione di configurazione di PythonInterpreter nel file di configurazione di vhosts di Apache.

PythonInterpreter mysite

Documenti Django pertinenti sulle distribuzioni dello stesso server

2) Stai eseguendo un backend della cache sulla stessa porta? Esiste una configurazione in settings.py che consente di aggiungere un prefisso al contenuto memorizzato nella cache con diversi caratteri per separare il contenuto della gestione temporanea dal contenuto live. Questo è implementato con la seguente configurazione in settings.py:

CACHE_MIDDLEWARE_KEY_PREFIX = "STG_"

Un'altra opzione potrebbe essere quella di essere eseguita su cache separate del filesystem per un po 'per vedere se il problema è stato risolto. In settings.py, prova ad aggiungere

CACHE_BACKEND = 'file:///var/tmp/django_cache'

3) Hai provato a eliminare tutti i tuoi file .pyc? Stranamente, quando le due soluzioni precedenti non sono state in grado di risolvere il nostro problema, abbiamo eseguito un comando bash per eliminare tutti i file python compilati (file .pyc) mentre il server è stato arrestato.

find ./ -type f -name "*.pyc" -exec rm -f {} \;

Ciò indicherebbe che le modifiche nella distribuzione non si sono ricompilate per un motivo o per l'altro.

Spero che questo aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top