【发布时间】:2014-02-11 16:57:37
【问题描述】:
我是 Flask 的新手,想确保 redis 服务器正在运行,如果没有,则启动它。这是我所拥有的:
@app.before_first_request
def initialize():
cmd = 'src/redis-cli ping'
p = subprocess.Popen(cmd,stdout=subprocess.PIPE)
out, err = p.communicate()
#if out.startswith('Could not connect to Redis'): #start redis here
if err is not None: raise Exception(err)
但是,我收到错误“OSError: [Errno 2] No such file or directory”
有没有更简单的方法来检查redis服务器是否正在运行?
【问题讨论】:
-
我不会采用这种方法。我会确保我的 Flask 应用程序和 redis 部署在单个容器/rpm/whatever 中。启动 redis 不是您的 Flask 应用程序的工作。
-
你能说得更具体些吗?我是烧瓶新手
-
这不是关于 Flask 的评论。这是对软件环境中职责分离的评论。正如 Hynek 所说,“配置不是应用程序的一部分”。使用 puppet 或 chef 或 ansible 或 saltstack 来部署您的应用程序及其所有依赖项。确保您的应用程序和依赖项使用 supervisord 或类似工具运行。
-
并且:通过在仅由脚本填充的虚拟环境中运行应用程序,确保您了解所有依赖项。