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.

