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/CAGdZMg8BfsvcqggHwtSwE%3DP_kZCLeXLV_a%2BZoe3WmE%3DiFveQpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to