django的model信号量机制之post_init

最近有一个业务上的需求: 每次创建一条记录时需要清理一下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: 未完,待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容