【问题标题】:How to configure Prefect backend server to point to Postgres如何配置 Prefect 后端服务器以指向 Postgres
【发布时间】:2020-10-18 23:59:37
【问题描述】:

难以将 Prefect 配置为在本地运行。 通过 pip3 安装,取决于 docker(已安装)和 docker-compose,已安装、已测试。作品。
我已经有一个正在运行的 Postgres 服务器,我喜欢配置为使用该服务器。但似乎在 docker 中也使用了一个?任何帮助表示赞赏。

运行时:

prefect backend server 
prefect server start

能够在本地找到图像 'docker/compose:1.27.4'
1.27.4:从 docker/compose 拉取(下载 en 开始运行 docker)

状态:已为 docker/compose:1.27.4 下载更新的图像
警告:未设置 PREFECT_SERVER_DB_CMD 变量。默认为空字符串
警告:未设置 DB_CONNECTION_URL 变量。默认为空字符串
警告:未设置 POSTGRES_DB 变量。默认为空白
警告:未设置 POSTGRES_PASSWORD 变量。默认为空字符串 >
警告:未设置 POSTGRES_USER 变量。默认为空字符串。

【问题讨论】:

    标签: docker configure prefect


    【解决方案1】:

    如果您参考prefect server start 的文档,您应该会找到您需要的所有信息:

    prefect server start --help
    
    ... 
          --use-volume                Enable the use of a volume for the Postgres service
          --volume-path       TEXT    A path to use for the Postgres volume, defaults to
                                      '~/.prefect/pg_data'
    

    【讨论】:

    • 谢谢,但是问题出在环境变量中,这些环境变量已正确传递给子任务,但 docker-compose up 没有拾取它们。
    【解决方案2】:

    我遇到的问题与Python中启动子进程的方式有关,Popen(docker-compose up, env=env) 运行此命令时会传递(当前)环境变量,但在某些方面在子任务中不可用。

    docker-compose up
    

    我调整了 server.py 代码并动态创建了一个.env 文件。测试和 docker-compose 找到并使用它。

    真正的问题在于 bash/sh 终端环境,而这正是我需要仔细研究的地方。

    【讨论】:

      【解决方案3】:

      Prefect 现在允许您直接执行此操作,而无需即时运行自定义脚本。

      您只需要指定--external-postgres 标志。

      prefect server start --postgres-url postgres://<username>:<password>@hostname:<port>/<dbname>
      

      或者您也可以将其添加到.prefect/config.toml:

      [server.database]
      connection_url = "postgres://<username>:<password>@hostname:<port>/<dbname> "
      

      【讨论】:

        猜你喜欢
        • 2014-09-26
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 2015-12-18
        • 2017-06-18
        • 1970-01-01
        相关资源
        最近更新 更多