Skip to main content

基于 FastAPI 的微服务架构开发套件

项目描述

MSA SDK 映像


msaSDK - 基于 FastAPI 的微服务架构开发工具包
使用 CRUD 和仪表板快速且一致地构建 PoC、MVP、API。
构建在 FastAPI、SQLModel、SQLAlchemy、Amis 和许多其他防弹库之上。
包版本 支持的 Python 版本


文档MSA SDK 文档 ( http://msa.u2d.ai/ )


特征

  • 更快地构建连接的分布式应用程序:为Dapr做好准备。
  • 一致性:有时有 10 或 100 的微服务,SDK 有助于简化版本控制并提供稳定的 Dapr 基础。
  • 高性能:基于FastAPI。享受所有好处。
  • 集成调度器:定义具有自然语言时间和依赖关系的调度器任务。
  • 集成仪表板 UI:管理员和可选身份验证启用仪表板和 CRUD 表单。
  • 集成 CRUD:基​​于 SQLModel 和 SQLAlchemy 生成 CRUD 路由器和管理仪表板表单。
  • 集成抽象文件系统:不可知的抽象文件系统 API,允许使用 S3、GCS、Azure Datalake、本地 FS、Youtube 等。
  • 集成 justpy WEB UI:将 justpy UI Web 框架集成到 MSAAPI,允许简单地添加路由到 justpy 网页功能。
  • Integrated Dict with Storage Backend : 将 Dict 与 Redis 等后端存储结合使用。
  • 集成信号:使用和处理信号和任务。

主要依赖

用法示例在应用模块 __init__.py 中

# -*- encoding: utf-8 -*-
"""
Copyright (c) 2022 - U2D.ai / S.Welcker
"""
from typing import Optional, List

from sqlmodel import SQLModel

from msaSDK.admin.utils.fields import Field
from msaSDK.models.service import get_msa_app_settings
from msaSDK.service import MSAApp


async def test_timer_min():
    app.logger.info("msaSDK Test Timer Async Every Minute")


def test_timer_five_sec():
    app.logger.info("msaSDK Test Timer Sync 5 Second")


class TestArticle(SQLModel, table=True):
    __table_args__ = {'extend_existing': True}
    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)
    title: str = Field(title='ArticleTitle', max_length=200)
    description: Optional[str] = Field(default='', title='ArticleDescription', max_length=400)
    status: bool = Field(None, title='status')
    content: str = Field(title='ArticleContent')


class TestCategory(SQLModel, table=True):
    __table_args__ = {'extend_existing': True}
    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)
    title: str = Field(title='ArticleTitle', max_length=200)
    description: Optional[str] = Field(default='', title='ArticleDescription', max_length=400)
    status: bool = Field(None, title='status')
    content: str = Field(title='ArticleContent')


get_msa_app_settings.cache_clear()
settings = get_msa_app_settings()
settings.title = "u2d.ai - MSA/SDK MVP"
settings.version = "0.0.1"
settings.debug = True

app = MSAApp(settings=settings, auto_mount_site=True,
             sql_models=[TestArticle, TestCategory],
             contact={"name": "msaSDK", "url": "http://u2d.ai", "email": "stefan@u2d.ai"},
             license_info={"name": "MIT", "url": "https://opensource.org/licenses/MIT", })

app.scheduler.task("every 1 min", func=test_timer_min )
app.scheduler.task("every 5 sec", func=test_timer_five_sec )

app.logger.info("Initialized " + settings.title + " " + settings.version)


@app.on_event("startup")
async def startup():
    app.logger.info("msaSDK Own Startup MSAUIEvent")
    #app.mount_site()


@app.on_event("shutdown")
async def shutdown():
    app.logger.info("msaSDK Own Shutdown MSAUIEvent")


if __name__ == '__main__':
    pass

典型运行日志

典型的日志运行

界面预览

带有系统信息的主屏幕

  • http://127.0.0.1:8090/admin/在浏览器中打开:

家

SQLModels 屏幕的 CRUD

CRUD

登录屏幕

  • http://127.0.0.1:8090/admin/auth/form/login在浏览器中打开:

登录

OpenAPI 交互式文档 (Swagger) 屏幕

  • http://127.0.0.1:8090/#/admin/docs在浏览器中打开:

开放API

分析器屏幕

  • http://127.0.0.1:8090/#/admin/profiler在浏览器中打开:

探查器

许可协议

  • msaSDK基于MIT开源免费使用,可免费用于商业用途,但请在显示界面清楚显示msaSDK - Auth Admin的版权信息。

如何创建文档

我们使用 mkdocs 和 mkdocsstring。代码引用和导航条目实际上是由触发的 Python 脚本 /docs/gen_ref_pages.py 在执行mkdocs servebuild执行时创建的。

PDF 创建选项的要求安装:

PDF Export 主要使用 weasyprint,如果您在这里遇到一些错误,请。检查那里的文档。安装是 msaSDK 的一部分,所以应该没问题。

我们现在可以使用以下方法测试和查看我们的文档:

mkdocs serve

构建静态站点:

mkdocs build

构建和发布

建造:

python setup.py sdist

发布到 pypi:

twine upload dist/*

下载文件

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

源分布

msaSDK-0.1.6.tar.gz (206.7 kB 查看哈希

已上传 source