Python 如何强制webapp2\u缓存的\u属性重新计算

Python 如何强制webapp2\u缓存的\u属性重新计算,python,forms,google-app-engine,caching,webapp2,Python,Forms,Google App Engine,Caching,Webapp2,我知道,webapp2\u cached\u属性会在每次调用方法后用数据替换方法,因此我的问题就出现了 我有一个多语言网站,我正在使用一个表单来构建一些简单的选择菜单。选择菜单是更改语言的数据。显然,如果用户更改了系统上的语言,我希望重建表单。但是,我不想删除webapp2\u cached\u属性,因为每次用户调用相同的url时,它都会重新生成表单,这会降低系统的速度。那么,是否有人知道如何强制webapp2\u cached\u属性按需重新评估,例如当客户端更改语言时。目前,除了默认语言中的

我知道,
webapp2\u cached\u属性
会在每次调用方法后用数据替换方法,因此我的问题就出现了

我有一个多语言网站,我正在使用一个表单来构建一些简单的选择菜单。选择菜单是更改语言的数据。显然,如果用户更改了系统上的语言,我希望重建表单。但是,我不想删除
webapp2\u cached\u属性
,因为每次用户调用相同的url时,它都会重新生成表单,这会降低系统的速度。那么,是否有人知道如何强制
webapp2\u cached\u属性
按需重新评估,例如当客户端更改语言时。目前,除了默认语言中的select数据外,我还拥有所选语言中的所有其他内容。任何肮脏的东西都可以!啊,是的,这只发生在生产上,而不是在开发服务器上

class HomeRequestHandler(BaseHandler):
    """
    Handler to show the home page
    """

    def get(self):
        params = {}
        params['products'] = []
        params['max_searches'] = 1
        params['user_search_count'] = 0

       return self.render_template('index.html', **params)

    @webapp2.cached_property
    def form(self):
        import product.product_data.forms as forms
        return forms.ProductForm(self)
好的,我已经尝试了以下方法,但是语言在生产中仍然没有改变

将此添加到我的基本处理程序-它正在工作

if hasattr(self, 'form'):
        if self.locale != self.oldLocale and hasattr(self, 'form_no_cache'):
            new_form = self.form_no_cache
            kwargs['form'] = new_form()
            logging.info('reset form')
            logging.info(kwargs['form'].product_type())
        else:
            kwargs['form'] = self.form
            logging.info('using cached form')
并将此添加到我的家庭处理器中

def form_no_cache(self):
    import product.product_data.forms as forms
    return forms.ProductForm(self)
所有这些在开发中都很好,并且日志在开发和生产中似乎是正确的


大家有什么想法吗?

好的,我想不出这一点,所以重写代码,在一个简单的def中构建select,并将其作为参数而不是表单传递。看起来很有效。虽然我对wtforms有怀疑,但不知情很痛苦,但没有时间……

谢谢,这帮了大忙!不知道为什么在我的谷歌搜索中没有出现这个问题,一定是迟到了…请参阅上面的最新更新,仍然存在相同的问题,但在开发服务器中,logging.info(kwargs['form'].product_type())显示了正确的语言,但在生产中没有显示。。。