检测Flask应用程序是否在本地运行

时间:2013-10-03 21:40:47

标签: python flask

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

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

具体来说,memcache在本地不适合我。

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

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

2 个答案:

答案 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')