美文网首页程序员
django的model信号量机制之post_init

django的model信号量机制之post_init

作者: wu_sphinx | 来源:发表于2016-01-11 22:27 被阅读710次

    最近有一个业务上的需求: 每次创建一条记录时需要清理一下redis缓存,于是想到了django的signals,因为我是创建,因此用到的signal是post_init(post_init是在model实例化之后触发),直的很好用,我的model如下:

    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: 未完,待续......

    相关文章

      网友评论

        本文标题:django的model信号量机制之post_init

        本文链接:https://www.haomeiwen.com/subject/xxzqkttx.html