5

我希望我的代码的某些部分在本地运行时不运行。

这是因为,我无法在本地安装某些依赖项以运行代码。

具体来说,memcache 在本地对我不起作用。

@app.route('/some_url_route/')
@cache.cached(timeout=2000) #ignore this locally
def show_a_page():

在本地运行时,应用程序如何以某种方式忽略上面代码的缓存部分?

4

2 回答 2

3

在我的代码中,我遵循 Django-esq 模型并有一个主settings.py文件,我将所有设置都保存在其中。

然后在该文件中放置DEBUG = True您的本地环境(和False生产),然后使用:

 from settings import DEBUG

 if DEBUG:
     # Do this as it's development
 else:
     # Do this as it's production

所以在你的cache装饰器中包含一个类似的行,它只检查 memcached ifDEBUG=False

然后,您可以将所有这些设置加载到您的 Flask 设置中,如配置文档中所述。

于 2013-10-03T21:46:48.723 回答
1

如果您使用的是 Flask-Cache,则只需编辑设置:

if app.debug:
    app.settings.CACHE_TYPE = 'null'  # the cache that doesn't cache

cache = Cache(app)
...

更好的方法是为生产和开发设置单独的设置。我使用基于类的方法:

class BaseSettings(object):
    ...

class DevelopmentSettings(BaseSettings):
    DEBUG = True
    CACHE_TYPE = 'null'
    ...

class ProductionSettings(BaseSettings):
    CACHE_TYPE = 'memcached'
    ...

然后在设置应用程序时导入适当的对象(config.py是包含设置的文件的名称):

app.config.from_object('config.DevelopmentConfig')
于 2013-10-03T21:51:55.373 回答