django-cached-field

نرم افزار تصویر:
django-cached-field
جزئیات نرم افزار:
نسخه: 1.2.2
ها تاریخ: 14 Apr 15
توسعه دهنده: Martin Chase
پروانه: رایگان
محبوبیت: 2

Rating: 1.0/5 (Total Votes: 1)

-جنگو ذخیره سازی میدان یک برنامه جنگو فراهم می کند که است کرفس-معوق، زمینه های ذخیره سازی در جنگو ORM برای داده های گران قیمت به محاسبه
با استفاده از جنگو ORM و کرفس، حفظ گران به محاسبه نسبت تا به روز.
مثال
می گویند شما یک روش آهسته بر روی یکی از مدل های خود را:
کلاس Lamppost (models.Model):
را لمس کنید و.property
و nbsp؛ دف slow_full_name (خود):
را لمس کنید و. خواب (30)
& nbsp؛ از بازگشت '٪ S٪ S از٪ S'٪ (self.weight، self.first_name، self.country)
اخ. بیش از حد کند. بیایید کش که. ما چند ابزار می خواهید. کرفس با جنگو-کرفس نیاز به راه اندازی و زمزمه همراه هموار. سپس ما در زمینه ذخیره سازی ما اضافه کنید، از Mixin دارد مدل به ارث می برند و تغییر نام روش ما مناسب:
از django_cached_field CachedIntegerField واردات، ModelWithCachedFields
کلاس Lamppost (models.Model، ModelWithCachedFields):
& nbsp؛ در slow_full_name = CachedTextField (صفر = واقعی)
و nbsp؛ دف calculate_slow_full_name (خود):
را لمس کنید و. خواب (30)
& nbsp؛ از بازگشت '٪ S٪ S از٪ S'٪ (self.weight، self.first_name، self.country)
(بله، calculate_ فقط یک کنوانسیون. من به وضوح داده اند نیست تا روح ریل ...)
بعد، مهاجرت طرح پایگاه داده خود که شامل زمینه ذخیره سازی جدید با استفاده از جنوب، و یا رول خود شما. توجه داشته باشید که دو رشته خواهد شد به این جدول، cached_slow_full_name از نوع متن اضافه شده و slow_full_name_recalculation_needed از نوع بولی، احتمالا متخلف به درست است.
در حال حاضر که نیمه بهتر است. lamppost.slow_full_name ممکن است 30 ثانیه طول اولین بار آن را می شود برای یک رکورد با توجه به نام، اما از آن پس، آن خواهید بود از طریق مسنجر نزدیک. البته، در این نقطه، آن را هرگز بعد از آن اولین تماس تغییر خواهد کرد.
قطعه مهم باقی مانده از پازل است به باطل کش ما. زمینه های تشکیل دهنده Thoses احتمالا در برخی views.py تغییر (این می تواند در مورد توجه اگر ارزش مربوط به روز در حال هوشمندانه تر):
render_to ("lamppost / edit.html")
دف ویرایش (درخواست، lamppost_id):
& nbsp؛ در lamppost = Lamppost.objects.get (PK = lamppost_id)
& nbsp؛ اگر request.METHOD == 'POST:
& nbsp؛ در فرم = LamppostForm (request.POST)
& nbsp؛ اگر form.is_valid ():
را لمس کنید و. form.save ()
را لمس کنید و. form.instance.flag_slow_full_name_as_stale ()
& nbsp؛ در دیگری:
& nbsp؛ در فرم = LamppostForm ()
و nbsp؛ بازگشت {به شکل: شکل، 'lamppost': lamppost}
این سخت ترین بخشی به عنوان توسعه دهنده است! ذخیره ساز نیاز شما را شکار کردن هر جای ارزش را می توان تغییر و خواستار است که روش flag_slow_full_name_as_stale. آیا کشور اختصاص داده یک مقدار تصادفی جدید هر روز صبح در cron'o'clock؟ که پرچم بهترین بیات توسط cron'o'one بود باشد. آیا شما وزن بر اساس مجموع تمام کبوتر مرتبط محاسبه؟ قلاب را به فرود کبوتر. و برخاست. و هر آنچه را که وزن کبوتر فرد تغییر می کند. به عنوان آبراهام لینکلن گفت: "تنها دو مشکلات سخت در برنامه نویسی وجود دارد:. نامگذاری، باطل کش و فعال توسط یک خطا"
نصب
شما می توانید همه چیز آسان در خودتان:
تصویر در تصویر-جنگو ذخیره سازی میدان نصب
و یا، برای نصب و راه اندازی کتابچه راهنمای کاربر، شما می توانید مخزن کلون و نصب آن با استفاده از پایتون و setup.py:
دستگاه گوارش دستگاه گوارش کلون: //github.com/aquameta/django-cached-field.git
سی دی جنگو ذخیره میدان /
پایتون setup.py نصب
تست شده با جنگو 1.3.1، کرفس 2.3.1، جنگو-کرفس 2.3.3.
پیکر بندی
دو تغییر تنظیمات بسیار مورد نیاز برای چیزهایی به کار: مطمئن شوید که یک برنامه ثبت است، مطمئن شوید که کرفس می بیند فایل وظایف آن:
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، و همچنین

مورد نیاز:

پایتون.
جنگو

نظرات به django-cached-field

نظر یافت نشد
اضافه کردن نظر
روشن کردن تصاویر!