django의 모델 신호량 메커니즘의postinit

931 단어
최근에 업무상의 요구가 하나 있습니다: 기록을 만들 때마다 Redis 캐시를 정리해야 하기 때문에django의signals를 생각했습니다. 제가 만들었기 때문에 사용하는signal은postinit(post init는 모델 인스턴스화 이후에 트리거됨) 직선이 유용합니다. 내 모델은 다음과 같습니다.
from django.db.models.signals import post_init

class KungFu(models.Model):

    _database = 'mydb'

    user_id = models.CharField(max_length=36, db_index=True) 
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = "mydb_kungfu"


def delete_kungfu_cache(sender, **kwargs):
    """
    @note      
    :param sender:
    :return:
    """
    cache_key = "kungfu_cache"
    #delete cache
    
post_init.connect(delete_kungfu_cache, sender=KungFu)

이렇게 하면 매번 새 기록을 만들 때마다 캐시를 지울 수 있습니다. 캐시를 지우는 목적은 매번 KungFu가 새로 만든 기록을 읽는 것입니다!django는 또 다른 신호량이 있습니다. 이 메커니즘은 캐시를 사용할 때 특히 유용합니다. ps: 미완성, 계속...

좋은 웹페이지 즐겨찾기