개더미
Dogpile은 두 개의 하위 시스템으로 구성되며, 하나는 다른 하나 위에 구축됩니다.
dogpile
단일 실행 스레드가 일부 리소스의 "생성자"로 선택되도록 허용하는 동시에 다른 실행 스레드가 이 리소스의 이전 버전을 리소스로 참조할 수 있도록 허용하는 제어 구조인 "dogpile lock" 개념을 제공합니다. 생성이 진행됩니다. 이전 버전이 없으면 해당 스레드는 개체를 사용할 수 있을 때까지 차단됩니다.
dogpile.cache
는 다양한 캐싱 백엔드에 대한 일반적인 인터페이스를 제공하고 추가로 이러한 캐시 백엔드를 dogpile
의 잠금 메커니즘과 통합하는 API 후크를 제공하는 캐싱 API입니다.
전반적으로 dogpile.cache는 동일한 작성자가 내부를 작성한 Beaker 캐싱 시스템을 대체하기 위한 것입니다. "작동"하는 Beaker의 모든 아이디어는 더 효율적이고 간결한 방식으로 dogpile.cache에서 다시 구현되며, 모든 허술한 것(Beaker의 내부는 2005년에 처음 작성되었습니다)은 쓰레기 더미로 분류됩니다.
선적 서류 비치
dogpile.cache 문서에서 dogpile.cache의 전체 문서를 참조하세요. 아래 섹션에서는 dogpile
패키지에 대한 간략한 개요를 제공합니다.
특징
- 사전 정의된 "지역"의 사전 구성을 장려하는 간결한 API입니다. 각 지역은 스토리지 백엔드, 구성 옵션 및 기본 만료 시간을 포함한 캐싱 특성 세트를 정의합니다.
- 표준 가져오기/설정/삭제 API와 함수 데코레이터 API가 제공됩니다.
- 키 생성 메커니즘은 완전히 사용자 정의할 수 있습니다. 함수 데코레이터 API는 캐시 키가 함수 호출에 대응하도록 만드는 방법을 사용자 정의하는 플러그형 "키 생성기" 기능을 갖추고 있으며, 선택 사항인 "키 맹글러" 기능은 원하는 대로 플러그형 키 맹글링(예: 인코딩, SHA-1 해싱)을 제공합니다. 각 지역마다.
- Beaker 캐싱 시스템의 핵심 엔진으로 처음 개발된 도그파일 잠금 장치는 여기에서 훨씬 단순화되고 개선되었으며 더 나은 테스트를 거쳤습니다. Beaker 아키텍처에 내재된 일부 주요 성능 문제, 특히 값이 캐시에서 자주 "이중 가져오기"되는 문제가 수정되었습니다.
- 백엔드는 "분산"이 백엔드의 스토리지 시스템과 일치하는 자체 버전의 "분산" 잠금을 구현합니다. 예를 들어, memcached 백엔드를 사용하면 모든 클라이언트가 memcached 자체를 사용하여 값 생성을 조정할 수 있습니다. dbm 파일 백엔드는 dbm 파일과 함께 잠금 파일을 사용합니다. Redis 기반 백엔드와 같은 새로운 백엔드는 스토리지 엔진에 적합한 자체 잠금 메커니즘을 제공할 수 있습니다.
- 새로운 백엔드를 작성하거나 기존 백엔드를 해킹하는 것은 일상적인 일이 되도록 의도되었습니다. 필요한 것은 기본적인 get/set/delete 메소드뿐입니다. 백엔드에 맞게 조정된 분산 잠금은 선택 사항이며, 그렇지 않으면 dogpile은 일반 스레드 뮤텍스를 사용합니다. 새로운 백엔드는 dogpile.cache에 직접 등록하거나 setuptools 진입점을 통해 사용할 수 있습니다.
- 포함된 백엔드는 3개의 memcached 백엔드(python-memcached, pylibmc, bmemcached), Redis 백엔드, Python의 anydbm 기반 백엔드 및 일반 사전 백엔드를 갖추고 있습니다.
- Mako 템플릿에 dogpile.cache 엔진을 제공하는 플러그인을 포함한 타사 플러그인을 위한 공간입니다.
SQLAlchemy 프로젝트
Dogpile은 SQLAlchemy 프로젝트의 일부이며 핵심 프로젝트와 동일한 표준 및 규칙을 준수합니다.
개발 / 버그 보고 / 풀 리퀘스트
이 프로젝트의 코딩 및 참여에 대한 지침은 SQLAlchemy 커뮤니티 가이드를 참조하세요.
행동 강령
무엇보다도 SQLAlchemy는 사용자와 개발자 간의 정중하고 사려 깊으며 건설적인 의사소통을 매우 강조합니다. 행동 강령에서 당사의 현재 행동 강령을 참조하십시오.
특허
Dogpile은 MIT 라이센스에 따라 배포됩니다.