基于 FastAPI 的微服务架构开发套件
项目描述
msaSDK - 基于 FastAPI 的微服务架构开发工具包
使用 CRUD 和仪表板快速且一致地构建 PoC、MVP、API。
构建在 FastAPI、SQLModel、SQLAlchemy、Amis 和许多其他防弹库之上。
文档: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 等后端存储结合使用。
- 集成信号:使用和处理信号和任务。
主要依赖
- 快速API
- SQLModel 与 SQLAlchemy和Pydantic相结合,具有它们的所有功能。
用法示例在应用模块 __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
登录屏幕
http://127.0.0.1:8090/admin/auth/form/login
在浏览器中打开:
OpenAPI 交互式文档 (Swagger) 屏幕
http://127.0.0.1:8090/#/admin/docs
在浏览器中打开:
分析器屏幕
http://127.0.0.1:8090/#/admin/profiler
在浏览器中打开:
许可协议
msaSDK
基于MIT
开源免费使用,可免费用于商业用途,但请在显示界面清楚显示msaSDK - Auth Admin的版权信息。
如何创建文档
我们使用 mkdocs 和 mkdocsstring。代码引用和导航条目实际上是由触发的 Python 脚本 /docs/gen_ref_pages.py 在执行mkdocs
serve
或build
执行时创建的。
PDF 创建选项的要求安装:
PDF Export 主要使用 weasyprint,如果您在这里遇到一些错误,请。检查那里的文档。安装是 msaSDK 的一部分,所以应该没问题。
我们现在可以使用以下方法测试和查看我们的文档:
mkdocs serve
构建静态站点:
mkdocs build
构建和发布
建造:
python setup.py sdist
发布到 pypi:
twine upload dist/*