2013-08-13 10 views

risposta

2
cache._expire_info.get('foo') 

per ottenere il timestamp unix

+0

Grazie per aver ricordato la giusta direzione. È un po 'più complicato però. Ha dovuto fare questo: 'key = cache.make_key ('foo')' ' cache.validate_key (chiave)' 't = cache._expire_info.get (chiave)' – petr0

+0

@ petr0, non ero' t in grado di ottenere il tuo approccio al lavoro. Sto usando locMemCache ma quando vado a recuperare la data di scadenza usando 't = cache._expire_info.get ('keyname')', restituisce un 'None'. È un bug o non sto facendo qualcosa di giusto –

+0

@ austin-a, hai usato make_key? Le chiavi sono memorizzate internamente con nomi diversi. 't = cache._expire_info.get (cache.make_key ('keyname'))' – petr0

1

per ottenere il timestamp unix:

key = cache.make_key('foo') 
cache.validate_key(key) 
t = cache._expire_info.get(key) 

per ottenere il tempo assoluto:

datetime.datetime.fromtimestamp(t) 

per ottenere il tempo rimanente in secondi:

(datetime.datetime.fromtimestamp(cache._expire_info.get(key)) - datetime.datetime.now()).seconds 

Nota che sembra che questo funziona solo per locmem, non memcached, se qualcuno sa come fare questo in memcached prega di commento

+0

Questa soluzione non funziona con memcached, almeno in django versione 1.7 –

+0

Nessuno dei due ha funzionato nel mio caso, ha ricevuto un errore: AttributeError: 'FileBasedCache 'oggetto non ha attributo' _expire_info ' –

Problemi correlati