django-cached-field

צילום מסך תוכנה:
django-cached-field
פרטי תוכנה:
גרסה: 1.2.2
טען תאריך: 14 Apr 15
מפתחים: Martin Chase
רשיון: ללא תשלום
פופולריות: 2

Rating: 1.0/5 (Total Votes: 1)

נדחית-סלרי הוא אפליקציה המספקת Django-מטמון השדה Django, שדות במטמון על Django ORM לנתונים ל- לחשב יקרים
באמצעות Django ORM וסלרי, לשמור על יקר ללחשב מייחס למצב העדכני ביותר.
דוגמא
תגיד יש לך שיטה איטית על אחד מהדגמים שלך:
כיתת פנס רחוב (models.Model):
& Nbsp;property
& Nbsp; def slow_full_name (עצמי):
& Nbsp; שינה (30)
& Nbsp; שיבה '% s% s של% s'% (self.weight, self.first_name, self.country)
איכס; איטי מדי. בואו מטמון ש. אנחנו רוצים כמה כלים. סלרי עם Django-סלרי יהיה צורך להגדיר והמהמו לעצמו בצורה חלקה. אז אנחנו נוסיף בשדה במטמון שלנו, לרשת מ Mixin המודל ולשנות את שם השיטה שלנו כראוי:
מCachedIntegerField יבוא django_cached_field, ModelWithCachedFields
כיתת פנס רחוב (models.Model, ModelWithCachedFields):
& Nbsp; slow_full_name = CachedTextField (null = True)
& Nbsp; def calculate_slow_full_name (עצמי):
& Nbsp; שינה (30)
& Nbsp; שיבה '% s% s של% s'% (self.weight, self.first_name, self.country)
(כן, calculate_ הוא רק מוסכמה. אני בבירור לא ויתרתי הרפאים מסילות ...)
בשלב הבא, להעביר סכימת db שלך כדי לכלול את שדה שהמורה החדש באמצעות דרום, או להתגלגל משלך. שים לב ששני שדות יתווספו לטבלה זו, cached_slow_full_name של טקסט הסוג וslow_full_name_recalculation_needed של בוליאני הסוג, כנראה חדלות פירעון לנכון.
כבר זה די טוב. lamppost.slow_full_name עשוי להימשך 30 שניות בפעם הראשונה שהוא מקבל נקרא לשיא מסוים, אבל מכאן ואילך, זה יהיה מיידי קרוב. כמובן, בשלב זה, זה לעולם לא ישתנה לאחר שהשיחה הראשונה.
היצירה החשובה שנותרה בפאזל היא לפסול את המטמון שלנו. השדות המרכיבים את thoses כנראה השתנו בחלק views.py (זה יכול להיות יותר חכם על לשים לב אם הערכים הרלוונטיים מעודכנים):
render_to ("פנס הרחוב / edit.html")
עריכת def (בקשה, lamppost_id):
& Nbsp; פנס רחוב = Lamppost.objects.get (PK = lamppost_id)
& Nbsp; אם "POST" request.METHOD ==:
& Nbsp; טופס = LamppostForm (request.POST)
& Nbsp; אם form.is_valid ():
& Nbsp; form.save ()
& Nbsp; form.instance.flag_slow_full_name_as_stale ()
& Nbsp; אחר:
& Nbsp; טופס = LamppostForm ()
& Nbsp; תשואה {'צורה': צורה, "פנס רחוב": פנס רחוב}
זה החלק הקשה ביותר כמפתח! מטמון מחייב אותך לצוד בכל מקום הערך יכול להיות שונה וקורא ששיטת flag_slow_full_name_as_stale. האם מדינה שהוקצתה ערך אקראי חדש בכל בוקר בcron'o'clock? הדגל שהכי טוב להיות מעופש ידי cron'o'one. האם אתה לחשב את המשקל המבוסס על הסכום של כל היונים הקשורים? תתחבר לנחיתת היונים. והמראה. וכל מה שמשנה במשקל של יונה בודדת. כמו אברהם לינקולן אמר, "יש בעיות קשות רק שני בתכנות:. שמות, פסילת מטמון ושגיאות-ידי off-אחד"
התקנה
אתה יכול לעשות את הדברים קלים על עצמך:
PIP להתקין מטמון Django-שדה
או, להתקנה ידנית, אתה יכול לשכפל את repo ולהתקין אותו באמצעות פיתון וsetup.py:
git clone git: //github.com/aquameta/django-cached-field.git
cd Django מטמון-שדה /
פיתון setup.py להתקין
נבדק עם Django 1.3.1, סלרי 2.3.1, Django-סלרי 2.3.3.
Configuration
שני שינויי הגדרות פחות או יותר הנדרשים לדברים לעבודה: לוודא שזה אפליקציה רשומה, להפוך את הסלרי בטוח רואה קובץ משימותיו:
INSTALLED_APPS + = ['django_cached_field',]
CELERY_IMPORTS + = ['django_cached_field.tasks',]
שינוי אחד הוא אופציונאלי: אם חישוב מחדש צריך לקרות כאשר סומן כמעופש (ברירת מחדל) או להשאיר אותו בפעם הבאה שהתכונה היא לגשת. זה שימושי עבור סביבות בדיקה שבו לא אכפת לך שהערכים במטמון שלך אינם חוקיים. שים לב כי במצב זה, לא היית צריך את סלרי.
CACHED_FIELD_EAGER_RECALCULATION = # אמת או שקר עבור סביבות בדיקה
זוהי אפשרות גלובלית, כך חריגים בודדים צריכים במקום להיות מטופלים על ידי עובר את טענת and_recalculate לשיחת flag_FIELD_as_stale.
אזהרות
- מצב מירוץ אם אתה דגל שדה מעופש כמו בעסקת db שלוקח יותר זמן כדי להשלים את העבודה מאשר הסלרי נדרש כדי להיקרא.
- כל שיטות ORM (למשל order_by, המסנן) צריכים להשתמש cached_FIELD.
- Recalculate_FIELD משתמש .update (cached_FIELD = כדי לקבוע את הערך.
- Flag_FIELD_as_stale משתמש .update, כמו גם

דרישות :

  • Python
  • .
  • Django

תגובות ל django-cached-field

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!