Django-Cached-Feld

zwischengespeicherte Felder für Django
Jetzt downloaden

Django-Cached-Feld Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • BSD License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Martin Chase
  • Website des Verlags:
  • http://github.com/outofculture

Django-Cached-Feld Stichworte


Django-Cached-Feld Beschreibung

Django-Cached-Field ist eine Django-App, die Sellerie-aufgeschobene, zwischengespeicherte Felder auf Django Orm bietet, um die Ratesed-Django-ORM und Sellerie-Recheneinrichtung zu berechnen, teure Attribute auf dem neuesten Stand zu halten. Exampelnay, Sie haben langsam Methode zu einem Ihrer Modelle: Klasse Laternenpost (Modelle.Model): @Property def Slow_full_name (Self): Schlaf (30) Rückkehr 'Die% S% S von% S'% (Self.gewicht, self.first_name, selbst. Land) UGH; zu langsam. Lass uns das cache cache. Wir wollen ein paar Werkzeuge. Sellerie mit Django-Sellerie muss sanft aufgerichtet werden und summieren summieren. Dann fügen wir in unserem zwischengespeicherten Feld hinzu, erben vom Modell mischen und benennen unsere Methode angemessen um: von django_cached_field import cachedintegerfield, modelwithcachedfieldsclass lamppost (Models Schlaf (30) Rückkehr 'Die% s% S von% S'% (Self.gewicht, self.first_name, self.country) (yeah, berechnen) ist nur eine Konvention. Ich habe den Rails Ghost eindeutig nicht aufgegeben. .) Als nächstes wandern Sie Ihr DB-Schema, um das neue zwischengespeicherte Feld mit Süden aufzunehmen, oder rollen Sie Ihre eigene. Beachten Sie, dass zwei Felder in diese Tabelle hinzugefügt werden, cached_slow_full_name von Typtext und Slow_Full_name_Recalculation_Nein von Typ BOOLEAN, wahrscheinlich standardmäßig auf true.already, das ist irgendwie besser. lamppost.slow_full_name dauert 30 Sekunden, wenn er zum ersten Mal für einen bestimmten Datensatz aufgerufen wird, aber von da an ist es unmittelbar. Natürlich wird es zu diesem Zeitpunkt nie nach diesem ersten Anruf ändert. Das verbleibende wichtige Stück des Puzzles ist es, unseren Cache ungültig zu machen. This-Bestandteile sind wahrscheinlich in einigen Ansichten geändert. Objects.get (pk = lamppost_id) if Anfrage () Zurück {'Formular': Formular, 'Lamppost': lamppost} Dies ist der schwierigste Teil als Entwickler! Caching erfordert, dass Sie jeden Ort jagen müssen, in dem der Wert geändert werden kann, und nennen Sie diese Methode von flag_slow_full_name_as_stale. Ist das Land jeden Morgen einen zufälligen neuen Wert bei Cron'o'Cl? Diese Flagge war von cron'o'one am besten abgestanden. Berechnen Sie das Gewicht basierend auf der Summe aller zugehörigen Tauben? Hook in die Taubenlandung. Und Start. Und alles, was ein einzelnes Taubengewicht ändert. Als Abraham Lincoln sagte: "Es gibt nur zwei harte Probleme bei der Programmierung: Benennung, Cache-Ungültiger und Off-of-One-Fehler." Installationyou kann die Dinge für sich selbst einfachen: PIP Installieren Sie Django-Cached-Felder, für eine manuelle Installation, Sie Kann den Repo klonen und installieren Sie es mit Python und setup.py:git Klongit: //github.com/aquameta/django-cached-field.gitcd django-cached-field / python setup.py installiert mit django 1.3.1, Sellerie 2.3.1, Django-CELERY 2.3.3.configurationTwo-Einstellungen Änderungen sind für die Arbeit für Dinge ziemlich erforderlich: Stellen Sie sicher, dass es sich um eine registrierte App handelt, um sicherzustellen, dass Sellerie seine Aufgabendatei sieht: installiert_Apps + = celery_imports + = Eine Änderung ist optional: Ob die Neuberechnung erfolgen sollte, wenn er als stales (Standard) gekennzeichnet ist (Standard) oder zum nächsten Zugriff des Attributs überlassen ist. Dies ist nützlich, um Umgebungen zu testen, in denen es egal ist, dass Ihre zwischengespeicherten Werte ungültig sind. Beachten Sie, dass Sie in dieser Situation nicht benötigen, um CELERY.CACHED_FIELD_EAGER_RECALCULATULATE = TRUE # oder FALSE FÜR TESTENDE AUMMELSSTHIS ist eine globale Option, sodass einzelne Ausnahmen durch das Übergeben des And_Recalculate-Arguments auf den Call flag_field_as_stale anrufen. Markieren eines Felds, das in einer dB-Transaktion abgelaufen ist, die länger dauert, als der Selleriejob erforderlich ist, um aufgerufen zu werden. .- Flag_Field_AS_Stale verwendet .update, auch als Homepage des Product


Django-Cached-Feld Zugehörige Software