Ci sono preoccupazioni che dovrebbe avere sulla memorizzazione di un oggetto Python di blocco in una sessione di coppa?

StackOverflow https://stackoverflow.com/questions/2794829

Domanda

C'è una certa pagina sul mio sito dove voglio evitare che lo stesso utente di visitare due volte di fila. Per evitare questo, ho intenzione di creare un oggetto di blocco (dalla libreria di threading di Python). Tuttavia, avrei bisogno di memorizzare che tra le sessioni. C'è qualcosa che occorre fare attenzione quando si cerca di memorizzare un oggetto di blocco in una sessione (in particolare una sessione Beaker)?

È stato utile?

Soluzione

Memorizzazione di un'istanza threading.Lock in una sessione (o in qualsiasi altro luogo che le esigenze serializzazione) è una pessima idea, e presumibilmente si otterrà un'eccezione se si tenta di (in quanto tale oggetto non può essere serializzato, ad esempio, non può essere pickled). Un approccio tradizionale per la serializzazione cooperativa dei processi si basa su blocco dei file (su file "artificiali" per esempio in una directory come /tmp/locks/<username> se si desidera che il blocco sia per utente, come si indica). Credo che la voce di Wikipedia fa un buon lavoro di descrivere l'area generale; se ci quale sistema operativo si sta ordine di marcia dire, potremmo suggerire qualcosa di più specifico (purtroppo non credo che ci sia una soluzione cross-platform per questo).

Altri suggerimenti

Ho appena realizzato che questa era una terribile domanda dal momento che il blocco di una serratura e salvarlo alla sessione fa due passi vanificando così lo scopo delle azioni atomiche della serratura.

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