V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yuexuan
V2EX  ›  Python

Python 异步 Web 框架 Fastapi 怎么样,已经够成熟到商业项目了吗

  •  
  •   yuexuan · 2020-03-19 16:54:15 +08:00 · 9230 次点击
    这是一个创建于 1492 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自动 OpenAPI 验证和文档编制, 特别是自动生成接口文档,集成了 swagger, 这个真的太香了, 有人用这个框架到公司项目上了吗
    22 条回复    2020-05-28 16:52:56 +08:00
    676529483
        1
    676529483  
       2020-03-19 17:23:31 +08:00
    我这边没有,没有 cbv、有 bug 没精力解决,加上比较新,很难得到公司认可
    triangle111
        2
    triangle111  
       2020-03-19 17:28:13 +08:00
    那些四五年的一般都用 Django\Flask 吧,只要招聘岗位需要 Fastapi 的话,应该还是回去学习的
    ClericPy
        3
    ClericPy  
       2020-03-19 17:28:47 +08:00
    starlette 足够稳定, fastapi 更新还比较频繁, 看他们官网上, 用 fastapi 的那几个, 多数还是内部产品时候用...
    不过得看项目类型吧, golang 那么新兴, gin 就算用户多, 也没到一统江湖的地步, 不也一样上大项目
    wzw
        4
    wzw  
       2020-03-19 17:28:57 +08:00 via iPhone
    已用
    janxin
        5
    janxin  
       2020-03-19 17:32:10 +08:00
    @ClericPy 基本上一统该语言江湖的框架比较少,很多语言都是至少有两个主流框架在使用的
    yuexuan
        6
    yuexuan  
    OP
       2020-03-19 18:16:30 +08:00
    @wzw 使用感觉怎么样呀,稳不稳定,有没有一些神奇的 bug
    frostming
        7
    frostming  
       2020-03-19 22:18:16 +08:00
    头号 Fastapi 吹你好,果然你在这
    @ClericPy
    jenlors
        8
    jenlors  
       2020-03-19 22:46:38 +08:00
    fastapi + tortoise-orm 还是不错的,公司项目正在使用,不过 tortoise-orm 目前还不是很完善,然而也没有更好的 async orm 了,需要自己踩一踩坑。
    YUX
        9
    YUX  
       2020-03-19 22:53:01 +08:00
    fastapi + tortoise-orm 确实是一个不错的组合
    也可以 aiohttp + aiomysql, 这个组合坑少
    janxin
        10
    janxin  
       2020-03-19 23:17:07 +08:00
    ponyorm 我觉得很好啊,写法很 pythonic
    iConnect
        11
    iConnect  
       2020-03-20 00:13:03 +08:00 via Android
    一方面用 flask 写 api 也很快,另外有些周边库还没更上 py3.6,用 fastapi 就怕工具不够用,先等等再说
    ClericPy
        12
    ClericPy  
       2020-03-20 08:38:11 +08:00
    @janxin #5
    嗯, 就是想到 Spring 生态那么好的例子太少了

    @frostming #7 这回是来吐槽它更新有点频繁了, 毕竟还不是 1.0 版本, 平时用上它也是找个协程环境的框架使. 顺便问个小问题, 那个 pdm 昨天更新用了下, pdm add xxx 的时候如果依赖库特别多, 偶尔一个库会因为 pypi 官网连接超时导致整个下载安装过程 crash, 下次安装又成从头开始了, 除了一个个安装依赖, 有什么办法加点超时重试么
    frostming
        13
    frostming  
       2020-03-20 09:17:50 +08:00   ❤️ 1
    @ClericPy 你说的应该是依赖解析(Resolving)的过程,现在安装已经是并行的了(还没发版)
    MrZok
        14
    MrZok  
       2020-03-20 10:09:22 +08:00
    上次遇到一个问题,在他们官网上查了半天,用上面的解决方案也不能解决问题,结果是因为版本更新了,官网上的示例已经不能正常使用 0.0
    yuexuan
        15
    yuexuan  
    OP
       2020-03-20 12:52:36 +08:00
    @ClericPy 这个框架使用感觉如何,配套的第三方库好找吗, Python Web 圈有没有希望诞生一个老大哥,就向 java 中 Spring 系列, 感觉现在 web 框架都是各自为战, 真的挺看好 fastapi 这框架的,star 数都有 11k 了
    yuexuan
        16
    yuexuan  
    OP
       2020-03-20 13:10:09 +08:00
    决定了,准备把一下小项目用 fastapi 来写一下,自己来亲自体验一下这个框架
    ClericPy
        17
    ClericPy  
       2020-03-20 16:13:54 +08:00
    @yuexuan #15 小项目没有问题, 不过更新还是有点频繁, 就像楼上说的文档过期问题我就遇到至少 3 次(不光 fastapi), 然后 /doc 在嵌入 sub app 的时候会访问 /openapi.json 而忽略前缀这种 issue 这两天刚遇到, 简而言之, 还是很多小毛病, 毕竟诞生不久, issue 还要人修, 功能层面各种新 feature 层出不穷, 稳定性还是有点玄乎, 但是内核层面目前来说没有什么大毛病

    大项目在线上环境反正是关闭 /doc 的, 也没有什么大问题, 先体验一下吧, 我是搭配 databases 兼容多种数据库(底层用 sqlalchemy 做 orm 相关, 虽然大部分也是在用原生 sql), 配套的协程库, 有 aiolibs 和 encode 两个组织背书, 几乎遇不到我找不着库的情况了, 就算遇到了, 也是一句 run_in_executor 先跑着. 这框架真用了以后发现, 最舒服的地方就是: 以前的框架为什么不这么设计, 太神奇了. 里面很多设计给人眼前一亮的感觉, 上次这种感觉是: Bottle 的装饰器路由 和 线程隔离的全局 request 变量.
    之前就半个月撸了一个体验了一把, 不过代码让我写刺了(过渡设计, 最后乱套了), 就不推荐了
    hidaris
        18
    hidaris  
       2020-03-22 23:00:07 +08:00
    我这边线上的物联网项目有使用到 starlette,目前遇到的问题主要是文档不全,所以得经常翻源码…
    formaxin
        19
    formaxin  
       2020-03-25 16:33:35 +08:00
    两个项目上正在用,只写 api 没遇到过 bug
    hushao
        20
    hushao  
       2020-04-09 18:04:55 +08:00
    主体大方向上没有毛病,细节有待完善,并且文档虽然比较丰富但是不算全,纯写 api 的话,现在可以使用了。

    现有的 flask 项目原本打算看能不能转,但一看转后有些地方比 falsk 麻烦的多,就作罢。

    后面打算新开项目试一下,但是看好几次文档感觉有些部分还是很迷,现在状态是想用但是没什么特别惊艳的点让我下定决心一定要用。

    现在反而内心更倾向 Django...,但 django 小项目确实太重了😢,并且写 api 的话有些用不到的设置项你还必须要设置...

    大家有啥意见么。
    holinhot
        21
    holinhot  
       2020-05-05 08:37:56 +08:00
    di94sh
        22
    di94sh  
       2020-05-28 16:52:56 +08:00
    @holinhot #21 这货不算是 orm, 就 SQLAlchemy Core 构造完查询语句 往数据库驱动里一仍, 返回的连个对象都不是.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2839 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:12 · PVG 14:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.