Campo Django-cache

Campi cache per Django
Scarica ora

Campo Django-cache Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • BSD License
  • Prezzo:
  • FREE
  • Nome editore:
  • Martin Chase
  • Sito web dell'editore:
  • http://github.com/outofculture

Campo Django-cache Tag


Campo Django-cache Descrizione

Django-cached-field è un'app Django che fornisce sedano-differita, campi memorizzati nella cache su Django ORM per costosi da calcolare con i dati di Django ORM e sedano, mantengono costosi attributi aggiornati-to-date. Metodo su uno dei tuoi modelli: Lamppost di classe (modelli.model): @property def slow_full_name (sé): Sleep (30) return 'The% s% s di% s'% (peso selfixing, self.first_name, sé. paese) ugh; troppo lento. Cache lo facciamo. Vogliamo qualche strumento. Sedano con django-sedano dovrà essere impostato e ronzio lungo. Quindi aggiungeremo il nostro campo memorizzato nella cache, eredit dal modello mixin e rinomina il nostro metodo in modo appropriato: da Django_cached_field import import cachedintegerfield, modellowithcachedfieldclass lampione (modelli.model, modelwithcachedfields): slow_full_name = cachedtextfield (null = true) def calcola_slow_full_name (sé): Sleep (30) Return 'THE% S% s di% s'% (Self.weight, self.first_Name, Self.Country) (sì, calcola_ è solo una convenzione. Chiaramente non ho rinunciato ai binari fantasma .. .) Quindi, migrare il tuo schema DB per includere il nuovo campo memorizzato nella cache usando South o rotolare il tuo. Si noti che due campi verranno aggiunti a questa tabella, cached_slow_full_name di tipo testo e slow_full_name_recalculation_needing di tipo booleano, probabilmente inadempiente a true.al reay è un po 'meglio. LAMPPOST.SLOW_FULLL_NAME può richiedere 30 secondi la prima volta che viene chiamato per un determinato record, ma da quel momento in poi, sarà nigh istante. Naturalmente, a questo punto, non cambierà mai dopo la prima chiamata. Il restante pezzo importante del puzzle è invalidare la nostra cache. I tuoi campi costituenti sono probabilmente modificati in alcune viste.PY (questo potrebbe essere più intelligente di notare se i valori pertinenti vengono aggiornati): @ Render_to ("Lamppost / Edit.html") DEF EDIT (richiesta, LAMPOST_ID): LAMPOST = LAMPOST. Oggetti.Get (PK = LAMPOST_ID) se richiesto.Method == 'Post' ': Form = LampPostForm (request.post) se form.is_valid (): form.save () form.instance.flag_slow_full_name_as_stale () Else: Form = Lamppostform () Return {"Modum": Form, 'Lamppost': LampPost} Questa è la parte più difficile da lo sviluppatore! La memorizzazione nella cache richiede cacciare ogni posto che il valore potrebbe essere modificato e chiamando il metodo flag_smow_full_name_as_stale. Il paese è assegnato un nuovo valore casuale ogni mattina al cron'o'Clock? Quella bandiera era meglio essere stantia di Cron'O'O'O'O'O'O Calcola il peso in base alla somma di tutti i piccioni associati? Agganciare nell'atterraggio dei piccioni. E decollo. E tutto ciò che cambia il peso del piccione individuale. Come ha detto Abraham Lincoln, "ci sono solo due problemi di forza nella programmazione: denominazione, cache invalidazione e errori off-by-one." Installationyou può rendere le cose facili su te stesso: PIP Installa Django-Cached-Fieldor, per un'installazione manuale, per un'installazione manuale può clonare il repo e installarlo utilizzando Python e Setup.py:Git Clone Git: //github.com/aquameta/django-cached-field.gitcd Django-campo cache / Python Setup.pySptested con Django 1.3.1, Sedano 2.3.1, Django-sedano 2.3.3.ConfigurationTwo Le modifiche alle impostazioni sono praticamente necessarie per le cose al lavoro: assicurati che sia un'app registrata, assicurati che il sedano veda il suo file di attività: installato_apps + = cely_imports + = Una modifica è facoltativa: se il ricalcolo dovrebbe accadere quando si contrassegna come stantio (impostazione predefinita) o lasciata accedere all'attributo. Questo è utile per i test ambienti in cui non ti interessa che i valori memorizzati nella cache siano non validi. Si noti che in questa situazione non avresti bisogno di sedano.Cached_field_eager_recalculazione = True # o falso per testare gli ambienti, è un'opzione globale, quindi le singole eccezioni dovrebbero invece gestire passando l'argomento And_RECALLUCALE a Band flag_Field_as_Stale.Caveats- Condizioni di gara Bandiera Un campo come stantio in una transazione DB che richiede più tempo per completare rispetto al lavoro di sedano richiede per essere chiamato.- Tutti i metodi Order_By, Filter) devono utilizzare Cached_Field.- RecalCulate_field utilizza .updAte (cached_field = per impostare il valore .- flag_field_as_stale usi .update, anche la homepage di prodotti.


Campo Django-cache Software correlato

Scambi

Una soluzione di autenticazione collaborativa basata su browser ...

82

Scarica