+
 新版

高手问答第 294 期 —— Python下如何利用FastAPI框架开发实用、快捷的Web商业系统?

OSC哒哒 发布于 2022/11/22 13:53
阅读 29K+
收藏 13

在全民互联网的今天,一款好使的Web商业系统,首先需要支持大并发的访问量,以满足用户的快速访问需求。在Python技术体系下,大并发响应性能最优的当属FastAPI轻量级框架,其响应性能可以跟Node.JS和Go媲美,主要受益于它是异步技术框架。

Python技术体系下提供了大量的人工智能开发框架,把人工智能技术、大数据技术融合并工程化是软件开发人员必须面对的一个问题,FastAPI为此提供了很好的Web工程化技术支撑。FastAPI支持前后端分离开发,并支持FastAPI与Django混合开发,具有强大的工程实践能力。

与Django、Flask框架相比较,Django是Python下重量级的开发框架,集成了大量的后端公共功能模块,拿来稍微完善一下就可以使用。但是它也存在一些问题,比如高度集成了关系型数据库的操作支持,对NoSQL集成未作考虑,存在NoSQL数据库接入开发难度大的问题。另外,在异步技术上与FastAPI存在很大差距。Flask 仅适用于中小规模的Web开发,不支持异步技术,无法解决大规模并发访问问题。

此外,FastAPI也有高效编码、更少代码开发Bug、智能代码编辑等优点。

OSCHINA 本期高手问答 (11 月 23 日 - 11 月 29 日) 我们一起探讨“Python下如何利用FastAPI框架开发实用、快捷的Web商业系统”的话题,做客高手问答的嘉宾是畅销书《Python FastAPI Web开发从入门到项目实战》的作者 刘瑜、安义和喻小菲 老师。

可讨论的问题包括但不限于:

  • 如何利用FastAPI快速构建Web商业应用程序?
  • 如何实现MongoDB、Redis的集成开发?
  • 如何实现FastAPI和Django混编?
  • 如何实现FastAPI和前端Vue.js同步开发?

有其他相关的问题,也欢迎提问。

嘉宾介绍

刘瑜,高级信息系统项目管理师,具有20多年C、ASP、BASIC、FoxBASE、Delphi、Java、C#、Python等编程经验,软件工程硕士、硕士企业导师、大数据重点实验室主任。开发过商业项目20余套,承担省部级千万级别项目5个,发表国内外论文10余篇。出版了《战神——软件项目管理深度实战》《NoSQL数据库入门与实践》《Python编程从零基础到项目实战》《Python编程从数据分析到机器学习实践》《算法之美——Python语言实现(微课视频版)》《Python Django Web从入门到项目实战》《Python FastAPI Web开发从入门到项目实战》。

安义,系统架构师,部门经理,具有20多年软件开发经验,主导过多个行业(医疗、教育、互联网、地产、游戏、汽车、餐饮等)的软件系统开发工作。熟悉多种开发语言和开发框架,具有丰富的软件实战经验。曾是腾讯公司负责袋鼠跳跳应用的研发负责人,目前为“三酷猫”团队的软件技术总监。《Python Django Web从入门到项目实战》《Python FastAPI Web开发从入门到项目实战》第二作者。

喻小菲,专职软件高级工程师,10余年软件项目开发经验,FastAPI专业技术群群主,承担过物联网、游戏、网络安全等10多个商业项目。主要从事Python Web方向的开发工作,对FastAPI、Sanic、Django、Flask等网络框架均有研究,始终追踪Python开发最前沿的发展方向,具有丰富的Python Web开发经验。

为了鼓励踊跃提问,我们会在问答结束后从提问者中抽取 5 名幸运会员赠予《Python FastAPI Web开发从入门到项目实战》一书。

京东购书:

https://item.jd.com/10062939804784.html#none

天猫有售:
https://detail.tmall.com/item.htm?abbucket=14&id=688018990716&rn=9918a277021797d2c811ad4111db3886&spm=a1z10.3-b-s.w4011-22696760641.22.593ab832LiOz4i

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家向 刘瑜、安义和喻小菲老师 积极提问,直接回帖提问即可。

加载中
0
温柔如斯
温柔如斯

@zergan 使用 fastAPI 异步编程情况下,如何保证事务的处理?保证事务的一致性及上下文的相关性?

c
chise
一般情况下,orm的事务任务是独立的db连接,所以通过传递连接id的情况下即可实现事务的上下文相关性。
0
小xu中年
小xu中年

@zergan  不知道fastapi安全性如何?比如有没有xss、csrf插件?相比py4web怎么样呢?

Come ons
Come ons
fastapi主体定位于后台框架,您提的xss,csrf都是前端框架的安全插件。fastapi本身通过fastapi.security模块提供了OAuth身份验证等安全预付机制
0
dkJava11
dkJava11

@zergan  1.  fastapi如何实现 MongoDB、Redis 的集成开发?  fastapi 如果要和大数据相关的数据库结合可以吗?fastapi和doris结合?

2.这种异步编程的方式,  是支持了异步技术,并发访问时,会不会有数据延时的问题,读了是老的数据?怎么解决这种异步编程,数据不一致的缓存问题?

3. 

zergan
zergan
1. fastapi是一个异步web框架,可以用异步编程的方式处理请求和响应过程,而对于数据库等第三方框架来说,是否支持异步就要依赖于数据库的驱动是否提供了异步API。 2. 并不是使用了异步的web框架,所有的东西就都变成异步了, FastAPI支持了网络请求,也提供了依赖注入的方式集成第三方框架。但是访问数据的策略还需要根据具体的框架处理,比如脏读、缓存都是数据访问的策略,不是web框架的范围
0
游游酱

我个人觉得用FastAPI做rest还是挺方便的

Come ons
Come ons
👍👍👍
0
小博测试成长之路

@zergan   fastapi对比django的优缺点是什么呢

Come ons
Come ons
选择任何一款框架都要利用其优点,避开其缺点。fastapi最大优势支持异步高并发,响应速度在python技术体系下最快。Django的最大优势提供了后端一系列现成的功能模块,经过简单配置可以快速搭建复杂的后端功能。
c
chise
比django更快,更可视化,更容易,更简单。 比fastapi更全面,更丰富生态
0
MtrS
MtrS

@zergan   

1.  FastAPI 相较于java 的spring-boot 有什么优势么?

2.  Fast-API 有微服务相关的组件么? 在现在的开发中咋么实现微服务相关功能呢?

c
chise
优势就是fastapi和python本身开发非常容易和方便,这一点是java语言无法取代的。 在大多数时候,人工成本比硬件成本更加昂贵 fastapi作为微服务这个,你可以去github上搜索下,笔者没有太接触这块
0
J
Java383

@zergan  1.FastAPI  小白怎么入门学习FastAPI 比较好?

2.目前Python入门找工作,推荐从事FastAPI 的web工作吗? web工作是不是java比较优势大些?

Come ons
Come ons
本文章提到的本书为有python基础的读者提供fastapi入门到项目实战的所有源代码和相关知识,值得自学。python方向主要结合大数据,人工智能方向,结合fastapi可以方便实现上述两方向内容的工程化。Java目前在web应用开发领域占于主流地位。
c
chise
小白可以通过书籍学习(如本书)或者直接跟着官网的教程进行学习(前提是你已经有了python的基础知识) 目前python在web领域确实比不上java和go,但是python也有自身的优势,所以也有自身不可替代的角色。我建议你再学习一门go或者java之类的语言,相辅相成的情况下更容易找到工作
0
KelvinQ
KelvinQ

@zergan 那么多API框架,Python又是脚本语言,为什么要选FastAPI,Api能做到fast吗?

Come ons
Come ons
python是编程语言基础,直接用来开发WEB相当于建房先造砖、做门窗框架,效率会很低;有了fastapi框架相当于砖、门窗框架都有了,直接搭积木式的造房速度快、质量高。
c
chise
选择一个web框架,其实就是如下几点: 1、是否满足项目需求 2、开发是否方便 3、生态是否丰富 总的来说,fastapi的开发非常方便,生态虽然比不上django和flask,但是也能够满足绝大多数的需求。 每个框架都有自己的优缺点和适用范围。 另外python本身性能是比较低,但是,你的项目真的有很大的并发量吗?很多时候做选择本末倒置了,一味强调语言本身的性能,而忽略了自己根本用不上这么多
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部