跳转到主要内容

Python Compose,一个用于同时启动多个长时间运行的Python服务的工具。

项目描述

Python Compose

License PyPI - Python Version Supported Platforms PyPI - Downloads GitHub Repo stars

Python Compose是一个用于在隔离的Python环境中启动多个长时间运行的Python应用程序的命令行工具和库。受Docker Compose的启发,Python Compose旨在提供类似的功能,而不需要依赖于Docker容器、网络等。

目前,Python Compose支持以下环境

未来,我们希望支持

安装

使用包管理器pip安装python-compose

pip install python-compose

目前,Python Compose支持venvpyenv-virtualenvconda环境。pyenv-virtualenvconda管理器不是与Python Compose一起安装的。要安装它们,请遵循pyenv-virtualenvconda文档中的说明。

概念

单元

一个单元是一个对象,它表示如何为特定类型的Python环境处理程序创建、运行和清理服务。示例可以在python_compose/unit目录中找到。

YAML规范

Python 编译器目前只能从 YAML 文件中实例化,该文件由内部 spec.py Python 文件派生。Python Compose YAML 文件期望一个顶层键 units,它映射到一个 units 列表,即要运行的 Python 脚本。每个单元的环境由键 unit_type 描述。一个单元将具有不同的参数,有些是必需的,有些是可选的。同样,这些定义在 spec.py 中。

替代方案比较

Python Compose 不是世界上唯一的此类任务工具。如果您只在一个 Python 环境中工作并希望最小化外部工具和依赖项,那么它可能是一个方便的工具。以下是 Python Compose 与其他解决方案的比较表。

工具 操作系统 虚拟网络 运行非 Python 程序的能力 支持多个 Python 版本 需要非 Python 依赖项
Python Compose Linux/MacOS 使用 Conda 或 subprocess
Python Multiprocessing Linux/MacOS/Windows 使用 subprocess
Docker Compose Linux/MacOS/Windows
Systemd 单元文件 Linux
Bazel Linux/MacOS/Windows

示例

我们在 examples 目录中提供了许多如何使用 Python Compose 作为库和命令行工具的示例。以下是我们将假设的最像 Docker Compose 的使用案例,从单个配置文件启动许多后端服务。

在目录中创建一个 Python 脚本,httpd.py,它启动一个 HTTP 服务

import argparse
from http.server import BaseHTTPRequestHandler, HTTPServer

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("port", type=int)
    args = parser.parse_args()

    print(args)
    server_address = ("", args.port)
    httpd = HTTPServer(server_address, BaseHTTPRequestHandler)
    httpd.serve_forever()

然后,创建一个 yaml 文件,config.yaml,以在多个环境中启动此后端服务

units:
- unit_type: "venv"
  name: "httpd_0"
  env_dir: "./.envs"
  script_path: "./httpd.py"
  script_args: ["8080"]
- unit_type: "venv"
  name: "httpd_1"
  env_dir: "./.envs"
  script_path: "./httpd.py"
  script_args: ["8081"]
- unit_type: "pyenv-virtualenv"
  name: "httpd_2"
  py_version: "3.10"
  script_path: "./httpd.py"
  script_args: ["8082"]
- unit_type: "conda"
  name: httpd_3
  script: ["python3", "../conda/httpd.py", "8083"]

要启动所有容器,请运行

python3 -m python-compose config.yaml

要退出,请按 <Ctrl-C>

贡献

欢迎拉取请求。对于重大更改,请首先提交问题以讨论您想要更改的内容。

请确保根据需要更新测试。

设置您的开发环境。

开发者应首先安装所有必需的开发依赖项

pip3 install -e '.[dev]'

然后进行所有所需的更改

添加新单元

要添加新 unit,您首先需要将单元添加到 python_compose/unit。然后,将示例添加到示例目录,并最终更新 spec.py

测试

要测试 Python 编译器,请在安装所有开发依赖项后运行 pytest

许可证

MIT

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

python_compose-1.2.0.tar.gz (12.4 kB 查看散列)

上传时间

构建分布

python_compose-1.2.0-py3-none-any.whl (12.4 kB 查看散列)

上传时间 Python 3

由以下支持