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):
& Nbsp;property
& Nbsp; Def slow_full_name (স্ব):
& Nbsp; ঘুম (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; Def calculate_slow_full_name (স্ব):
& Nbsp; ঘুম (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")
Def সম্পাদনা (অনুরোধ, lamppost_id):
& Nbsp; lamppost = Lamppost.objects.get (PK = lamppost_id)
& Nbsp; যদি 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; ফিরে {'ফর্ম': ফর্ম, 'lamppost': lamppost}
এই ডেভেলপার হিসেবে hardest অংশ! ক্যাশে করার ফলে আপনি মান পরিবর্তন করা হতে পারে প্রত্যেক জায়গা অনুসরণপূর্বক এবং যে flag_slow_full_name_as_stale পদ্ধতি আহ্বান প্রয়োজন. দেশের একটি র্যান্ডম নতুন মান cron'o'clock এ রোজ সকালে নির্ধারিত হয়? যে পতাকা সেরা cron'o'one দ্বারা বাসী হতে ছিল. আপনি সমস্ত যুক্ত পায়রা এর সমষ্টি উপর ভিত্তি করে ওজন গণনা? পায়রা অবতরণ মধ্যে হুক. এবং টেকঅফের. এবং একটি পৃথক পায়রা এর ওজন পরিবর্তন সবকিছু. আব্রাহাম লিঙ্কন বলেন, "মাত্র দুটি হার্ড প্রোগ্রামিং সমস্যা আছে:. নামকরণ, ক্যাশে অবৈধতার এবং বন্ধ দ্বারা এক ত্রুটি"
সংস্থাপনা
আপনি নিজেকে উপর জিনিষ সহজ করতে পারেন:
জ্যাঙ্গো-ক্যাশে-ক্ষেত্র ইনস্টল পিপ
অথবা, একটি ম্যানুয়াল ইনস্টলেশনের জন্য, আপনি রেপো এবং ক্লোন পাইথন এবং setup.py ব্যবহার করে এটি ইনস্টল করতে পারেন:
Git ক্লোন Git: //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',]
এক পরিবর্তন ঐচ্ছিক: মামুলি (ডিফল্ট) হিসাবে চিহ্নিত বা বৈশিষ্ট্য ব্যবহার করা হয় পরবর্তী সময় বামে করা যখন recalculation ঘটতে হবে কিনা. আপনি আপনার ক্যাশে মান অবৈধ যে যত্ন না যেখানে এই পরীক্ষার পরিবেশের জন্য দরকারী. এই অবস্থায়, আপনি সেলারি প্রয়োজন হবে না মনে রাখবেন.
CACHED_FIELD_EAGER_RECALCULATION = সত্য # অথবা পরীক্ষার পরিবেশের জন্য মিথ্যা
এই এত পৃথক ব্যতিক্রম পরিবর্তে flag_FIELD_as_stale কল and_recalculate যুক্তি পাশ দিয়ে নাড়াচাড়া করতে হবে একটি বিশ্বব্যাপী বিকল্প নেই.
আদেশ সহকারে
- রেস অবস্থা আপনি সেলারি কাজ করা হবে নামক লাগে সম্পন্ন করতে বেশী সময় লাগে যে একটি ডিবি লেনদেনের একটি ক্ষেত্র হিসেবে বাসি ফ্ল্যাগ যদি.
- সমস্ত ORM পদ্ধতি (যেমন order_by, ফিল্টার) cached_FIELD ব্যবহার করতে হবে.
- Recalculate_FIELD মান সেট = (cached_FIELD .update ব্যবহার করে.
- Flag_FIELD_as_stale হিসাবে ভাল, .update ব্যবহার করে

আবশ্যক

  • পাইথন করুন
  • .
  • জ্যাঙ্গো

মন্তব্য django-cached-field

পাওয়া মন্তব্যসমূহ না
মন্তব্য যোগ করুন
ছবি চালু!