msaSDK - 基于 FastAPI 的微服务架构开发套件
快速、一致地构建具有 CRUD 和仪表板的 PoC、MVP、API。
构建在 FastAPI、SQLModel、SQLAlchemy、Amis 和许多其他防弹库之上。
文档:MSA SDK 文档 (http://msa.u2d.ai/)
更快地构建连接的分布式应用程序:为 Dapr 做好准备。
一致性:有时需要数十或数百个微服务,SDK 有助于轻松进行版本控制并提供稳定的 Dapr 基础。
高性能:基于FastAPI。享受所有好处。
集成调度程序:使用自然语言计时和依赖关系定义调度程序任务。
集成仪表板 UI :具有 CRUD 表单的管理和可选身份验证启用仪表板。
集成 CRUD :基于 SQLModel 和 SQLAlchemy 生成 CRUD 路由器和管理仪表板表单。
集成抽象文件系统:不可知的抽象文件系统 API,允许使用 S3、GCS、Azure Datalake、本地 FS、Youtube 等。
集成 justpy WEB UI :将 justpy UI Web 框架集成到 MSAAPI,允许简单地将路由添加到 justpy 网页功能。
与存储后端集成的 Dict :将 Dict 与后端存储(如 redis)一起使用。
集成信号:使用和处理信号和任务。
集成功能管理:有条件的功能切换管理。
快速API
SQLModel 与 SQLAlchemy 和 Pydantic 相结合,具有它们的所有功能。
msaUtils :基于 FastAPI 的微服务通用工具,如 Profiler、Scheduler、Sysinfo、Healtcheck、Error Handling 等。
msaJustPyUI :FastAPI 改编了 JustPy 版本,用于将 justpy UI Web 框架集成到 msaAppService,这允许简单地将路由添加到 justpy 网页功能。
msaCRUD :SQLModel/SQLAlchemy/FastAPI - 数据库对象 CRUD/API 自动化
msaFeature :有条件的功能开关管理
msaServer :Uvicorn/Gunicorn 的帮助程序和包装器,用于基于 FastAPI 的应用程序
msaSignal :Starlette/FastAPI 的信号/事件。
msaDocModels : # MSA Document Pydantic 模型和架构,用于存储处理文档的解析器、NLP、NLU 和 AI 结果
msaStorageDict :具有存储后端(如 redis 或 Zookeeper)的字典
# -*- 编码:utf-8 -*-"""版权所有 (c) 2022 - U2D.ai / S.Welcker"""fromtypes import 可选,Listfrom sqlmodel import SQLModelfrom msaSDK.admin.utils.fields import Fieldfrom msaSDK .models.service 导入 get_msa_app_settingsfrom msaSDK.service 导入 MSAAppasync def test_timer_min():app.logger.info("msaSDK 测试计时器每分钟异步一次")def test_timer_ Five_sec():app.logger.info("msaSDK 测试计时器同步 5 秒")class TestArticle(SQLModel, table=True):__table_args__ = {'extend_existing': True}id: 可选[int] = 字段(默认=无,primary_key=True, nullable=False)title: str = Field(title='ArticleTitle', max_length=200)description: 可选[str] = Field(default='', title='ArticleDescription', max_length=400)status: bool = Field(无,标题='状态')内容:str = Field(标题='文章内容')类TestCategory(SQLModel,表= True):__table_args__ = {'extend_existing': True}id: 可选[int] = Field(default=None, Primary_key=True, nullable=False)title: str = Field(title='ArticleTitle', max_length=200)description: 可选[str] = 字段(默认='',标题='文章描述',max_length=400)状态:bool = 字段(无,标题='状态')内容: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 = Trueapp = MSAApp(设置=设置,auto_mount_site = True,sql_models = [TestArticle,TestCategory], contact={"name": "msaSDK", "url": "http://u2d.ai", "email": "[email protected]"}, license_info={"name": "MIT", " url": "https://opensource.org/licenses/MIT", })app.scheduler.task("每 1 分钟", func=test_timer_min )app.scheduler.task("每 5 秒", func=test_timer_ Five_sec )app.logger.info("已初始化 " + settings.title + " " + settings.version)@app.on_event("startup")async def 启动():app.logger.info("msaSDK自己启动MSAUIEvent")#app.mount_site()@app.on_event("shutdown")async def shutdown():app.logger.info("msaSDK 自己的关闭 MSAUIEvent")if __name__ == '__main__':pass
在浏览器中打开http://127.0.0.1:8090/admin/
:
在浏览器中打开http://127.0.0.1:8090/admin/auth/form/login
:
在浏览器中打开http://127.0.0.1:8090/#/admin/docs
:
在浏览器中打开http://127.0.0.1:8090/#/admin/profiler
:
msaSDK
基于MIT
开源且免费使用,可免费用于商业用途,但请在某处显示/列出有关 msaSDK 的版权信息。
我们使用 mkdocs 和 mkdocsstring。在执行mkdocs
serve
或build
时,代码引用和导航条目实际上是由触发的 python 脚本 /docs/gen_ref_pages.py 创建的。
PDF 导出主要使用 weasyprint,如果您在此处遇到一些错误,请指出。检查那里的文档。安装是 msaSDK 的一部分,所以这应该没问题。
我们现在可以使用以下方法测试和查看我们的文档:
mkdocs serve
建立静态站点:
mkdocs build
建造:
python setup.py sdist
发布到 pypi:
twine upload dist/*