【问题标题】:Can a module import of a pex from pantsbuild be exposed?可以公开从pantsbuild 中导入pex 的模块吗?
【发布时间】:2021-01-20 02:56:40
【问题描述】:

来自https://github.com/pantsbuild/pex/issues/1181 的交叉帖子,因为我真的不知道在哪里问这个。

我正在使用 Nginx Unit,它为我的 FastAPI 应用程序提供了 ASGI 配置。它工作正常,但我不知道如何将它与 PEX 一起使用。

我已将其附在下面,但重点是 Nginx 单元有一个 Python 插件,它正在寻找“模块”和“可调用”。

现在看起来像“apigateway.main:app”,类似于 uvicorn 或您正在使用的任何其他服务器实现。与 uvicorn、gunicorn 或其他任何东西不同 - 我认为我不能在我的 pex 文件中打包任何其他工具并使用 PEX_SCRIPT。

对于是否/如何在 pex 之外公开模块和变量有什​​么建议吗?

{
    "listeners": {
        "*:80": {
            "pass": "routes"
        }
    },
    "routes": [
        {
            "action": {
                "pass": "applications/api"
            }
        }
    ],
    "applications": {
        "api": {
            "type": "python 3.9",
            "path": "/app",
            "module": "apigateway.main",
            "callable": "app",
            "limits": {
                "requests": 100
            },
            "processes": {}
        }
    },
    "access_log": "/var/log/access.log"
}

【问题讨论】:

    标签: python fastapi asgi pants nginx-unit


    【解决方案1】:

    这是在 Github 票证中回答的 (https://github.com/pantsbuild/pex/issues/1181):

    这里所有的传统语言都是为了延续最近的 venv pex 工具功能随 Pex 2.1.22 发布。如果你构建你的 PEX 文件 使用 venv 支持(将 --include-tools 添加到 Pex 命令行)然后 你获得了从你的 PEX 文件创建一个 venv 的能力。这样做是 目标机器或图像上的一次性手动步骤:

    PEX_TOOLS=1 ./my.pex venv /app 这将创建一个虚拟环境 在 /app 下包含您的应用程序及其依赖项。你可以指点 Nginx Unit 有家。我已经完成了这一切 https://github.com/jsirois/pex-issues-1181 证明它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 2021-05-19
      • 2023-03-26
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2018-07-26
      相关资源
      最近更新 更多