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.

赖信桃 <laixint...@gmail.com> 于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 林挺滨 <lintingbi...@gmail.com> 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?
>>
>>
>> 赖信桃 <laixint...@gmail.com> 于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.
>>>
>>> 林挺滨 <lintingbi...@gmail.com>于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.)
>>>>
>>>> 赖信桃 <laixint...@gmail.com> 于2018年6月27日周三 下午9:07写道:
>>>>
>>>>> Show me your code snippet.
>>>>>
>>>>> 林挺滨 <lintingbi...@gmail.com>于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 django-users+unsubscr...@googlegroups.com.
>>>>>> To post to this group, send email to django-users@googlegroups.com.
>>>>>> 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 django-users+unsubscr...@googlegroups.com.
>>>>> To post to this group, send email to django-users@googlegroups.com.
>>>>> 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 django-users+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to django-users@googlegroups.com.
>>>> 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 django-users+unsubscr...@googlegroups.com.
>>> To post to this group, send email to django-users@googlegroups.com.
>>> 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 django-users+unsubscr...@googlegroups.com.
>> To post to this group, send email to django-users@googlegroups.com.
>> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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