我希望我的代码的某些部分在本地运行时不会运行。
这是因为我无法在本地安装某些依赖项,以便运行代码。
具体来说,memcache在本地不适合我。
@app.route('/some_url_route/')
@cache.cached(timeout=2000) #ignore this locally
def show_a_page():
在本地运行时,应用程序会以某种方式忽略上述代码的缓存部分吗?
答案 0 :(得分: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 DEBUG=False
然后,您可以将所有这些设置加载到Flask设置中,详见configuration documentation.
答案 1 :(得分:0)
如果您正在使用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')