This is my fault. When I execute "cache.set(key, model_instance)", the model
instance hasn't get the cache content.

林挺滨 <[email protected]> 于2018年6月28日周四 下午1:33写道:

> I use cache api to keep model instances, but "@cache_property" isn't
> work. Now I use the module global var to keep model instances.
>
> 赖信桃 <[email protected]> 于2018年6月28日周四 下午1:29写道:
>
>> One is cached framework , one is just a better "property". Use cache api
>> if you want to keep some instances.
>> On Thu, Jun 28, 2018 at 13:11 林挺滨 <[email protected]> wrote:
>>
>>>
>>> https://docs.djangoproject.com/zh-hans/2.0/ref/utils/#module-django.utils.functional
>>>  Say:
>>> The cached result will persist as long as the instance does, so if the
>>> instance is passed around and the function subsequently invoked, the cached
>>> result will be returned.
>>>
>>> https://docs.djangoproject.com/zh-hans/2.0/topics/cache/ Say:
>>>  You can cache any Python object that can be pickled safely: strings,
>>> dictionaries, lists of model objects, and so forth.
>>>
>>> Then I use cache API to cache the model instance, "cached result" of the
>>> instance should be cached together.
>>>
>>>    - What is the problem?
>>>
>>>
>>> 赖信桃 <[email protected]> 于2018年6月28日周四 上午11:44写道:
>>>
>>>> Django's cached framework and @cached_property are two different
>>>> things, though both has "cached" it doesn't mean that they share memory....
>>>>
>>>> https://docs.djangoproject.com/zh-hans/2.0/topics/cache/
>>>>
>>>> https://docs.djangoproject.com/zh-hans/2.0/ref/utils/#module-django.utils.functional
>>>>
>>>> Read the docs.
>>>>
>>>> 林挺滨 <[email protected]>于2018年6月28日周四 上午10:31写道:
>>>>
>>>>> class Log(models.Model):
>>>>>     type = models.CharField(max_length=200, unique=True)
>>>>>     column = SortedManyToManyField(Column, blank=True)
>>>>>     min_column_cnt = models.IntegerField(blank=True, default=0, 
>>>>> help_text='0 equal NULL')
>>>>>
>>>>>     @cached_property
>>>>>     def column_list_name(self):
>>>>>         return [col.name for col in self.column.all()]
>>>>>
>>>>>     @cached_property
>>>>>     def column_len(self):
>>>>>         return len(self.column.all())
>>>>>
>>>>>     @cached_property
>>>>>     def get_all_column_checker(self):
>>>>>         column_ids = [c.id for c in self.column.all()]
>>>>>         return 
>>>>> ColumnChecker.objects.select_related('column').filter(column_id__in=column_ids)
>>>>>
>>>>>
>>>>> def get_log_attr(log_type):
>>>>>     global log_attr_dict, log_attr_last_update_ts
>>>>>     if (datetime.now() - log_attr_last_update_ts).total_seconds() < 
>>>>> update_log_attr_interval and \
>>>>>             log_type in log_attr_dict:
>>>>>         return log_attr_dict[log_type]
>>>>>     log_attr_dict[log_type] = 
>>>>> Log.objects.prefetch_related('column').get(type=log_type)
>>>>>     log_attr_last_update_ts = datetime.now()
>>>>>     return log_attr_dict[log_type]
>>>>>
>>>>>
>>>>> Now I use module global var "log_attr_dict" to cache the Log instance,
>>>>> @cached_property of the instance is work.
>>>>>
>>>>> def get_log_attr(log_type):
>>>>>     log_attr = cache.get(log_type)
>>>>>     if not log_attr:
>>>>>         log_attr = 
>>>>> Log.objects.prefetch_related('column').get(type=log_type)
>>>>>         cache.set(log_type, log_attr, update_log_attr_interval)
>>>>>     return log_attr
>>>>>
>>>>>
>>>>> But if I use cache api to cache the Log instance, @cache_property of
>>>>> the instance isn't work. (I use the local memory cache.)
>>>>>
>>>>> 赖信桃 <[email protected]> 于2018年6月27日周三 下午9:07写道:
>>>>>
>>>>>> Show me your code snippet.
>>>>>>
>>>>>> 林挺滨 <[email protected]>于2018年6月27日周三 下午8:44写道:
>>>>>>
>>>>>>> When I use cache framework api to cache a model instance,  
>>>>>>> @cached_property
>>>>>>> of the instance doesn't work. Why?
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Django users" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to [email protected].
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/django-users/5b27fa47-c712-460f-a421-1eb1d41c764e%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/django-users/5b27fa47-c712-460f-a421-1eb1d41c764e%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Django users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>>>
>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/django-users/CAMv51WQMrueCfWoBV3a0Djr7QhL3mqXcg_Ak5yNt75%3DP2Vy4WA%40mail.gmail.com
>>>>>> <https://groups.google.com/d/msgid/django-users/CAMv51WQMrueCfWoBV3a0Djr7QhL3mqXcg_Ak5yNt75%3DP2Vy4WA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>
>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 祝您  身体健康
>>>>>          工作愉快!
>>>>>
>>>>> 林挺滨
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Django users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/django-users/CAGdZMg8v2mp%3DOiO3coBFypGZ5O%2B_FLC_5cfnK94CRXax0OHRYw%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/django-users/CAGdZMg8v2mp%3DOiO3coBFypGZ5O%2B_FLC_5cfnK94CRXax0OHRYw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>
>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/CAMv51WTfACztXVaoCv6GgdJBEBh8KKhdfZXHQRYw4d%2BBC_2rOQ%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/django-users/CAMv51WTfACztXVaoCv6GgdJBEBh8KKhdfZXHQRYw4d%2BBC_2rOQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>
>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>> --
>>> 祝您  身体健康
>>>          工作愉快!
>>>
>>> 林挺滨
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/django-users.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/django-users/CAGdZMg83qVXpLSCPSkDvvJt%3DmEc%2BRLdjRTxyXdwNjdv4Fy%3DpMg%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/django-users/CAGdZMg83qVXpLSCPSkDvvJt%3DmEc%2BRLdjRTxyXdwNjdv4Fy%3DpMg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/CAMv51WTxDj8du2RKgWo%3DD1o5a0O5k1C5E2V1xHPDooc%3DUv662Q%40mail.gmail.com
>> <https://groups.google.com/d/msgid/django-users/CAMv51WTxDj8du2RKgWo%3DD1o5a0O5k1C5E2V1xHPDooc%3DUv662Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> 祝您  身体健康
>          工作愉快!
>
> 林挺滨
>


-- 
祝您  身体健康
         工作愉快!

林挺滨

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAGdZMg97TSo8a6sSRb3OQEj55ZOKmSnh2DeOH9%2BHuSr5vPS3gw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to