algoflow


Namealgoflow JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA FastAPI-based algorithm flow management system with Tortoise ORM and Aerich for database migrations
upload_time2025-07-18 06:51:58
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12.9
licenseMIT
keywords aerich algorithm fastapi tortoise-orm workflow
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FastAPI 模板

一个用于构建 FastAPI 应用程序的模板项目,包含 Tortoise ORM 和 Aerich 用于数据库迁移。

## 特性

- FastAPI、Tortoise ORM、Aerich 和 Pydantic 构建
- Docker Compose 快速部署
- Github Actions CI/CD

## 使用

### 安装

1. **克隆仓库:**

    ```bash
    git clone https://github.com/chenxingyuu/fastapi_template.git
    cd fastapi-template
    ```

2. **创建并激活虚拟环境:**

    ```bash
    python -m venv venv
    source venv/bin/activate  # 在 Windows 上使用 `venv\Scripts\activate`
    ```

3. **安装依赖项:**

    ```bash
    pip install -r requirements.txt
    ```

### 迁移

1. **初始化 Aerich:**

    ```bash
    make init
    ```

2. **初始化数据库:**

    ```bash
    make init-db
    ```

3. **创建并应用迁移:**

    ```bash
    make migrate
    make upgrade
    ```
4. **回滚迁移:**

    ```bash
    make downgrade
    ```

### 运行

1. **设置配置文件路径:**

   在 Linux 或 macOS 上:
    ```bash
    export CONFIG_FILE_PATH=/path/to/your/config.ini
    ```

   在 Windows 上:
    ```cmd
    set CONFIG_FILE_PATH=C:\path\to\your\config.ini
    ```

2. **启动 FastAPI 应用程序:**

    ```bash
    uvicorn app.main:app --reload
    ```

3. **访问应用程序:**

   打开浏览器并访问 `http://127.0.0.1:8000`。

### 使用 Docker

1. **构建 Docker 镜像:**

    ```bash
    docker build -t algo-flow:0.1.0 .
    ```

2. **运行 Docker 容器:**

    ```bash
    docker run -d -p 8000:8000 --name algo-flow-api algo-flow:0.1.0
    ```

3. **访问应用程序:**

   打开浏览器并访问 `http://127.0.0.1:8000`。

### 使用 Docker Compose

1. **启动服务:**

    ```bash
    docker-compose up -d
    ```

2. **访问应用程序:**

   打开浏览器并访问 `http://127.0.0.1:8000`。

3. **停止服务:**

    ```bash
    docker-compose down
    ```

## 开发

1. **安装 pre-commit 钩子:**

    ```bash
    pre-commit install
    ```

2. **运行测试:**

    ```bash
   # 运行所有测试
    pytest -v
   # 如果你想生成覆盖率报告,可以使用以下命令:
    pytest --cov-report=html -v
    ```

3. **检查代码并格式化:**

    ```bash
    pre-commit run --all-file
    ```

4. **在开发模式下运行应用程序:**

    ```bash
    uvicorn app.main:app --reload
    ```

## 配置

配置通过 `config.ini` 文件进行管理。在运行应用程序之前,请确保将 `CONFIG_FILE_PATH` 环境变量设置为指向你的配置文件。
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "algoflow",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12.9",
    "maintainer_email": null,
    "keywords": "aerich, algorithm, fastapi, tortoise-orm, workflow",
    "author": null,
    "author_email": "Chen Xingyu <chenxingyu@ndnu.edu.cn>",
    "download_url": "https://files.pythonhosted.org/packages/13/60/4ef5669ea015908d2e27d7954834958ea0543caf57027e4c9bb6d9d5b2f4/algoflow-0.1.0.tar.gz",
    "platform": null,
    "description": "# FastAPI \u6a21\u677f\n\n\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa FastAPI \u5e94\u7528\u7a0b\u5e8f\u7684\u6a21\u677f\u9879\u76ee\uff0c\u5305\u542b Tortoise ORM \u548c Aerich \u7528\u4e8e\u6570\u636e\u5e93\u8fc1\u79fb\u3002\n\n## \u7279\u6027\n\n- FastAPI\u3001Tortoise ORM\u3001Aerich \u548c Pydantic \u6784\u5efa\n- Docker Compose \u5feb\u901f\u90e8\u7f72\n- Github Actions CI/CD\n\n## \u4f7f\u7528\n\n### \u5b89\u88c5\n\n1. **\u514b\u9686\u4ed3\u5e93\uff1a**\n\n    ```bash\n    git clone https://github.com/chenxingyuu/fastapi_template.git\n    cd fastapi-template\n    ```\n\n2. **\u521b\u5efa\u5e76\u6fc0\u6d3b\u865a\u62df\u73af\u5883\uff1a**\n\n    ```bash\n    python -m venv venv\n    source venv/bin/activate  # \u5728 Windows \u4e0a\u4f7f\u7528 `venv\\Scripts\\activate`\n    ```\n\n3. **\u5b89\u88c5\u4f9d\u8d56\u9879\uff1a**\n\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n### \u8fc1\u79fb\n\n1. **\u521d\u59cb\u5316 Aerich\uff1a**\n\n    ```bash\n    make init\n    ```\n\n2. **\u521d\u59cb\u5316\u6570\u636e\u5e93\uff1a**\n\n    ```bash\n    make init-db\n    ```\n\n3. **\u521b\u5efa\u5e76\u5e94\u7528\u8fc1\u79fb\uff1a**\n\n    ```bash\n    make migrate\n    make upgrade\n    ```\n4. **\u56de\u6eda\u8fc1\u79fb\uff1a**\n\n    ```bash\n    make downgrade\n    ```\n\n### \u8fd0\u884c\n\n1. **\u8bbe\u7f6e\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff1a**\n\n   \u5728 Linux \u6216 macOS \u4e0a\uff1a\n    ```bash\n    export CONFIG_FILE_PATH=/path/to/your/config.ini\n    ```\n\n   \u5728 Windows \u4e0a\uff1a\n    ```cmd\n    set CONFIG_FILE_PATH=C:\\path\\to\\your\\config.ini\n    ```\n\n2. **\u542f\u52a8 FastAPI \u5e94\u7528\u7a0b\u5e8f\uff1a**\n\n    ```bash\n    uvicorn app.main:app --reload\n    ```\n\n3. **\u8bbf\u95ee\u5e94\u7528\u7a0b\u5e8f\uff1a**\n\n   \u6253\u5f00\u6d4f\u89c8\u5668\u5e76\u8bbf\u95ee `http://127.0.0.1:8000`\u3002\n\n### \u4f7f\u7528 Docker\n\n1. **\u6784\u5efa Docker \u955c\u50cf\uff1a**\n\n    ```bash\n    docker build -t algo-flow:0.1.0 .\n    ```\n\n2. **\u8fd0\u884c Docker \u5bb9\u5668\uff1a**\n\n    ```bash\n    docker run -d -p 8000:8000 --name algo-flow-api algo-flow:0.1.0\n    ```\n\n3. **\u8bbf\u95ee\u5e94\u7528\u7a0b\u5e8f\uff1a**\n\n   \u6253\u5f00\u6d4f\u89c8\u5668\u5e76\u8bbf\u95ee `http://127.0.0.1:8000`\u3002\n\n### \u4f7f\u7528 Docker Compose\n\n1. **\u542f\u52a8\u670d\u52a1\uff1a**\n\n    ```bash\n    docker-compose up -d\n    ```\n\n2. **\u8bbf\u95ee\u5e94\u7528\u7a0b\u5e8f\uff1a**\n\n   \u6253\u5f00\u6d4f\u89c8\u5668\u5e76\u8bbf\u95ee `http://127.0.0.1:8000`\u3002\n\n3. **\u505c\u6b62\u670d\u52a1\uff1a**\n\n    ```bash\n    docker-compose down\n    ```\n\n## \u5f00\u53d1\n\n1. **\u5b89\u88c5 pre-commit \u94a9\u5b50\uff1a**\n\n    ```bash\n    pre-commit install\n    ```\n\n2. **\u8fd0\u884c\u6d4b\u8bd5\uff1a**\n\n    ```bash\n   # \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\n    pytest -v\n   # \u5982\u679c\u4f60\u60f3\u751f\u6210\u8986\u76d6\u7387\u62a5\u544a\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\uff1a\n    pytest --cov-report=html -v\n    ```\n\n3. **\u68c0\u67e5\u4ee3\u7801\u5e76\u683c\u5f0f\u5316\uff1a**\n\n    ```bash\n    pre-commit run --all-file\n    ```\n\n4. **\u5728\u5f00\u53d1\u6a21\u5f0f\u4e0b\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\uff1a**\n\n    ```bash\n    uvicorn app.main:app --reload\n    ```\n\n## \u914d\u7f6e\n\n\u914d\u7f6e\u901a\u8fc7 `config.ini` \u6587\u4ef6\u8fdb\u884c\u7ba1\u7406\u3002\u5728\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u4e4b\u524d\uff0c\u8bf7\u786e\u4fdd\u5c06 `CONFIG_FILE_PATH` \u73af\u5883\u53d8\u91cf\u8bbe\u7f6e\u4e3a\u6307\u5411\u4f60\u7684\u914d\u7f6e\u6587\u4ef6\u3002",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A FastAPI-based algorithm flow management system with Tortoise ORM and Aerich for database migrations",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/chenxingyuu/AlgoFlow/issues",
        "Documentation": "https://github.com/chenxingyuu/AlgoFlow#readme",
        "Homepage": "https://github.com/chenxingyuu/AlgoFlow",
        "Repository": "https://github.com/chenxingyuu/AlgoFlow"
    },
    "split_keywords": [
        "aerich",
        " algorithm",
        " fastapi",
        " tortoise-orm",
        " workflow"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "51c2119a321b429253deb3c42bf3e8e6c8d1aefdf20b7260ae5c76fc872d0921",
                "md5": "cca28d3454c53bca2887a9f15d0bd394",
                "sha256": "ec1e6857c44d6d501a1a8a9d056f5e80b7b050953e0cd658224ad19e69e88037"
            },
            "downloads": -1,
            "filename": "algoflow-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cca28d3454c53bca2887a9f15d0bd394",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12.9",
            "size": 133319,
            "upload_time": "2025-07-18T06:51:56",
            "upload_time_iso_8601": "2025-07-18T06:51:56.138502Z",
            "url": "https://files.pythonhosted.org/packages/51/c2/119a321b429253deb3c42bf3e8e6c8d1aefdf20b7260ae5c76fc872d0921/algoflow-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "13604ef5669ea015908d2e27d7954834958ea0543caf57027e4c9bb6d9d5b2f4",
                "md5": "3f970d5e6867588ac3a3d582db3e8733",
                "sha256": "92ef92eae9a62ae9a4d9ec64c4ceb3d27ba6fe7c4ef151fcb377cb57eddf25f0"
            },
            "downloads": -1,
            "filename": "algoflow-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3f970d5e6867588ac3a3d582db3e8733",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12.9",
            "size": 157343,
            "upload_time": "2025-07-18T06:51:58",
            "upload_time_iso_8601": "2025-07-18T06:51:58.503048Z",
            "url": "https://files.pythonhosted.org/packages/13/60/4ef5669ea015908d2e27d7954834958ea0543caf57027e4c9bb6d9d5b2f4/algoflow-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-18 06:51:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chenxingyuu",
    "github_project": "AlgoFlow",
    "github_not_found": true,
    "lcname": "algoflow"
}
        
Elapsed time: 2.44369s