原有的 Flask 应用如何无缝接入现有 FastAPI 项目

2024-01-20 04:08

本文主要是介绍原有的 Flask 应用如何无缝接入现有 FastAPI 项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前天的抽奖结果比较尴尬,当时是为了测试一下抽奖的流程,自己也参与了下,没想到中奖的就是自己。这次我决定送两本《代码大全2》,对,没错,就是下面这本珍藏版,文末抽两本:

好了,话不多说。接下来是今天的干货。

通常是先使用 Flask 开发了项目,后来又用 FastAPI 开发了几个接口,但是一时半会无法全部迁到 FastAPI,那么就需要让之前的 Flask 应用接入现有的 FastAPI 应用,然后有时间了再慢慢迁移。

比如说你之前的 Flask 项目是这样的;

文件名 flask_project.py

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Flask Index Page'@app.route('/hello')
def hello():return 'Flask Hello, World'

现在,借助于 FastAPI 的 WSGIMiddleware,我们可以轻松的将 WSGI 应用作为 FastAPI 的一个子应用。

编写 FastAPI 应用,只需将原有的 flask app 导入,使用 WSGIMiddleware 包裹起来,放在 FastAPI 的子应用里面,代码如下所示:

文件名 api.py

from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from flask_project import app as flask_appapp = FastAPI()@app.get("/")
async def root():return "FastAPI index page"app.mount("/flask", WSGIMiddleware(flask_app))

现在,只需要运行 uvicorn api:app --host 0.0.0.0 --port 8000 --reload,原来的 Flask app 就运行起来了,是不是很方便?

当我们访问 / 时就是 FastAPI 的应用,当我们访问 /flask 时,就是 Flask 应用:

79350b5bac3485d2a8f511df5b1ef7a1.png 13d2c640de89ce5895b6183f5241caaf.png 54d9bb994f1e3f6306451f0ede878e53.png

最后的话

FastAPI 是非常火热的 Web API 框架,一度超越 Django REST Framework,得益于它的简洁和高性能,如果你还不熟悉的话,可以去官方网站 https://fastapi.tiangolo.com/ 学习一下,虽说是英文,但是很容易看懂,可以说是保姆级教程,是非常值得学习的技术栈。

推荐阅读:

开发环境下,如何通过一个命令让 fastapi 和 celery 一起工作

FastAPI:快速开发一个文本转语音的接口

Django,Flask ,FastAPI 怎么选?

FastAPI框架诞生的缘由(上)

FastAPI框架诞生的缘由(下)

最后是今天的送书活动,关注公众号「Python七号」回复「送书」即可抽奖。

bd12702599b5f9eeb9fc223f1d5fa908.png

这篇关于原有的 Flask 应用如何无缝接入现有 FastAPI 项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624743

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时