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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容