django-cached-field

ภาพหน้าจอของซอฟแวร์:
django-cached-field
รายละเอียดซอฟแวร์:
รุ่น: 1.2.2
วันที่อัพโหลด: 14 Apr 15
ผู้พัฒนา: Martin Chase
การอนุญาต: ฟรี
ความนิยม: 2

Rating: 1.0/5 (Total Votes: 1)

django แคสนามเป็น app Django ที่ให้คื่นฉ่ายรอการตัดบัญชีสาขาที่เก็บไว้ใน Django ออมแพงการคำนวณข้อมูล
ใช้ Django ออมและคื่นฉ่ายให้มีราคาแพงเพื่อคำนวณแอตทริบิวต์ up-to-วัน
ตัวอย่าง
สมมติว่าคุณมีวิธีที่ช้าลงบนหนึ่งในรูปแบบของคุณ:
ชั้นเสาตะเกียง (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_ เป็นเพียงการประชุม. ฉันอย่างชัดเจนยังไม่ได้ให้ขึ้นรถไฟผี ... )
ถัดไปโยกย้ายคีมาฐานข้อมูลของคุณจะรวมข้อมูลที่เก็บไว้ใต้ใหม่โดยใช้หรือม้วนของคุณเอง โปรดทราบว่าสองช่องจะถูกเพิ่มลงตารางนี้ 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; ถ้า 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 คุณคำนวณน้ำหนักขึ้นอยู่กับผลรวมของนกพิราบที่เกี่ยวข้องทั้งหมดหรือไม่ ขอลงในเชื่อมโยงไปถึงนกพิราบ และสนามบิน และทุกอย่างที่มีการเปลี่ยนแปลงน้ำหนักนกพิราบของแต่ละบุคคล ขณะที่อับราฮัมลินคอล์นกล่าวว่า "มีเพียงสองปัญหาที่ยากในการเขียนโปรแกรม. ตั้งชื่อ, โมฆะแคชและปิดโดยหนึ่งข้อผิดพลาด"
การติดตั้ง
คุณสามารถทำให้สิ่งที่ง่ายในตัวเอง:
PIP ติดตั้งสนาม django แค
หรือสำหรับการติดตั้งด้วยตนเองคุณสามารถโคลน repo และติดตั้งโดยใช้งูหลามและ setup.py:
โคลนคอมไพล์คอมไพล์: //github.com/aquameta/django-cached-field.git
cd django แคสนาม /
หลาม setup.py ติดตั้ง
ทดสอบกับ Django 1.3.1, 2.3.1 คื่นฉ่าย, Django-คื่นฉ่าย 2.3.3
การตั้งค่า
การตั้งค่าสองการเปลี่ยนแปลงจะต้องสวยมากสำหรับสิ่งที่จะต้องทำ: ให้แน่ใจว่ามันเป็น app ที่ลงทะเบียนให้แน่ใจว่าคื่นฉ่ายเห็นไฟล์งานของมัน
INSTALLED_APPS + = ['django_cached_field']
CELERY_IMPORTS + = ['django_cached_field.tasks']
หนึ่งการเปลี่ยนแปลงที่จะเป็นตัวเลือกไม่ว่าการคำนวณใหม่จะเกิดขึ้นเมื่อสถานะเป็นค้าง (เริ่มต้น) หรือจะปล่อยให้ในครั้งต่อไปแอตทริบิวต์มีการเข้าถึง นี้จะเป็นประโยชน์สำหรับสภาพแวดล้อมการทดสอบที่คุณไม่สนใจว่าค่าที่เก็บไว้ของคุณจะไม่ถูกต้อง ทราบว่าในสถานการณ์เช่นนี้คุณจะไม่จำเป็นต้องคื่นฉ่าย
CACHED_FIELD_EAGER_RECALCULATION = True # หรือเท็จสำหรับสภาพแวดล้อมการทดสอบ
นี้เป็นตัวเลือกที่ทั่วโลกยกเว้นบุคคลดังนั้นแทนที่จะควรจะจัดการโดยผ่านอาร์กิวเมนต์ and_recalculate การเรียก flag_FIELD_as_stale
เตือน
- สภาพการแข่งขันถ้าคุณธงเป็นข้อมูลเก่าในการทำธุรกรรมฐานข้อมูลที่ใช้เวลานานกว่าจะเสร็จสมบูรณ์งานคื่นฉ่ายจะถูกเรียกว่า
- วิธีการออมทั้งหมด (เช่น order_by กรอง) ต้องใช้ cached_FIELD
- recalculate_FIELD ใช้ .update (cached_FIELD = เพื่อตั้งค่า
- flag_FIELD_as_stale ใช้ .update เช่นเดียว

ต้องการ

  • หลาม
  • .
  • Django

ความคิดเห็นที่ django-cached-field

ความคิดเห็นที่ไม่พบ
เพิ่มความคิดเห็น
เปิดภาพ!