django-cached-field

소프트웨어 스크린 샷:
django-cached-field
소프트웨어 정보:
버전: 1.2.2
업로드 날짜: 14 Apr 15
개발자: Martin Chase
라이센스: 무료
인기: 2

Rating: 1.0/5 (Total Votes: 1)

장고 캐시 필드가 제공하는 장고 응용 프로그램입니다 셀러리를 이연, 비용이 많이 드는 계산 데이터에 대한 장고 ORM에 캐시 필드
장고 ORM와 셀러리를 사용하여, 비용이 많이 드는 계산이 최신 상태로 속성을 유지합니다.

당신이 당신의 모델 중 하나에 느린 방법을 말한다 :
클래스 숙주 (같이 models.Model) :
& NBSP; @property
& NBSP; 데프 slow_full_name (자기) :
& NBSP; 수면 (30)
& NBSP; 반환 '%의 %의 %의의'% (self.weight, self.first_name, self.country)
우; 너무 느립니다. 의 그 캐시 보자. 우리는 몇 가지 도구를 할 것입니다. 장고 - 셀러리 셀러리는 설정하고 원활하게 즐거운 작업해야합니다. 그리고 우리는 우리의 캐시 필드에 추가 할 것입니다, 모델 믹스 인 상속하고 적절하게 우리의 방법의 이름을 변경 :
django_cached_field 수입 CachedIntegerField, ModelWithCachedFields에서
클래스 숙주 (같이 models.Model, ModelWithCachedFields) :
& NBSP; slow_full_name = CachedTextField (널 (null) = 참)
& NBSP; 데프 calculate_slow_full_name (자기) :
& NBSP; 수면 (30)
& NBSP; 반환 '%의 %의 %의의'% (self.weight, self.first_name, self.country)
(네, calculate_ 그냥 대회. 나는 분명 ... 레일 유령을 포기하지 않은 경우)
다음으로, 남쪽으로 사용하여 새 캐시 필드를 포함하도록 DB 스키마를 마이그레이션하거나 자신의 롤. 두 개의 필드가 아마 사실을 디폴트로,이 테이블을 입력 텍스트의 cached_slow_full_name에 추가 Boolean 형의 slow_full_name_recalculation_needed 될 것이라고합니다.
이미 좀 낫다. lamppost.slow_full_name은 30 초 그것을 주어진 레코드에 대해 호출되는 첫 번째 시간이 걸릴 수 있지만, 그때부터, 그것은 거의 즉시 알 수있을 것입니다. 물론,이 시점에서, 그 첫 번째 호출 후 변경하지 않습니다.
퍼즐의 나머지 중요한 부분은 우리의 캐시를 무효화하는 것입니다. 양태에서는 구성 필드는 아마 (이 관련 값이 업데이트되면 알았어에 대한 자세한 영리한 될 수 있음) 일부 views.py에서 변경 :
@render_to ( "가로등 / edit.html")
데프 편집 (요청, lamppost_id) :
& NBSP; 가로등 기둥 = Lamppost.objects.get (PK = lamppost_id)
& NBSP; 경우 request.METHOD == 'POST'
& 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
또는, 수동 설치를 위해, 당신은 REPO를 복제하고 파이썬과 setup.py를 사용하여 설치할 수 있습니다 :
자식 복제 자식 : //github.com/aquameta/django-cached-field.git
CD 장고가 캐시 필드 /
파이썬 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 = TRUE # 또는 테스트 환경에 대한 거짓
이 때문에 개별 예외 대신 flag_FIELD_as_stale 호출에 and_recalculate 인수를 전달하여 처리해야하는 글로벌 옵션입니다.
주의 사항
- 경쟁 조건은 셀러리 작업을 호출하는 데 걸리는 것보다 시간이 더 오래 걸리지 DB 트랜잭션의 필드와 같은 오래된 플래그를합니다.
- 모든 ORM 방법 (예 : order_by, 필터) cached_FIELD를 사용해야합니다.
- recalculate_FIELD 값을 설정하기 = (cached_FIELD .update를 사용합니다.
- flag_FIELD_as_stale뿐만 아니라, .update를 사용

이 요구 사항 :

이 파이썬.
장고

코멘트 django-cached-field

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!