Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来

△△请给“Python猫”加星标 ,以免错过文章推送

Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来_第1张图片

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯。

文章&教程

1、Flask 已死,FastAPI 是未来[3]

一篇标题十分吸睛引战的文章。说实话因见过太多“xxx 已死”、“再见了 xxx”这种煽动情绪的标题,我已经习惯绕道不读。比较框架优缺点,这非常合理,但刻意往贬低一方的角度引,就显狭隘了。(附:一篇回应文 Flask 已死,FastAPI 永生[4]、对回应文的回应文 理性参与讨论《Flask 已死,FastAPI 永生》[5])

2、Python + Flask 打造属于自己的 RSS 安全信息流[6]

如何用 Python 搭建属于自己的 RSS 信息流网站?文章介绍了一个完整的 Flask 项目,支持对接 RSS、解析文章、自动更新,最后部署上线并使用 Nginx 作反向代理。

3、Microdot:又一个 Python Web 框架[7]

作者介绍了自己开源的一个语法类似于 Flask 的 Web 框架,完全支持 asyncio 异步,支持 Websocket、SSE、CORS、Jinja 和 uTemplate 模板等功能。非常小(核心框架代码 700 多行),可以跟 MicroPython 一起使用。

4、周末 AI 项目:在 2004 年的诺基亚 9500 上运行 7B 大型语言模型[8]

在近 20 年前的早期智能手机上运行当下最火的大语言模型,这事感觉蛮有趣!作者使用大小为 4GB 的Llama-2–7B-Chat-GPTQ 模型,最先尝试用 Streamlit 创建应用,但发现它的浏览器不支持,最后用 Flask 开发一个简单的网页,实现与 LLM 的交互!

Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来_第2张图片

诺基亚9500手机上的大语言模型

5、Python Asyncio 之常见的三个坑[9]

Asyncio 出现晚,不像goDartjs一样隐式的运行事件循环,又使用了asyncawait的语法,所以很容易用错。文章介绍了三个坑,以及正确的避坑方法。

6、Bash、Lua、Python 和 Rust 的梦幻岛冒险[10]

原文很短,推荐阅读。文章是三段“冒险故事”,主旨是让我们看到 Bash、Lua、Python 和 Rust 在实现常规 for 循环及推导式和迭代器写法时的相似性与差异性。(附:作者的另一篇 数据兔子洞:爱丽丝从 Pandas 到 DuckDB 仙境的冒险[11])

7、YAML、Python 和 Holy Graal[12]

YAMLScript[13] 是一种函数式编程语言,其语法使用 YAML 编码。它提供了 Python 的yamlscript 库,可与PyYAML 一样操作 YAML 文件,支持最新的 YAML 1.2 规范,还可使用 YAMLScript 函数来生成或操作数据。

8、“Python -m”:最酷的 Python 标记,真的值得更多关注[14]

Python 有不少命令行标记,文章主要介绍了“-m”标记的用法。我非常认可原文标题中用“Coolest”形容这个标记。早在 2019 年,我写过一篇更为详尽的文章《Python 中 -m 的典型用法、原理解析与发展演变[15]》,若你没读过,我诚心推荐!

9、Python CI 的初学者指南[16]

持续集成(简称 CI)是将开发者的代码合并到主存储库中的过程,它涉及的环节不少:提交前测试、代码格式化、静态分析、解决冲突等。很多任务需要用自动化方式,文章详细介绍了 CI 入门、CI 平台选择、CI 任务实践、CI 任务扩展等话题。

10、Python Type Hints 简明教程(基于 Python 3.12)[17]

一篇很详细的 Type Hints 教程,大部分内容是对《流畅的 Python 第二版》与官方文档的总结,后续基于 Python 3.12 重新编排并新增了一些内容。(投稿自@JayYoung2021[18])

11、Pyinstaller EXE 被检测为病毒?解决方案和替代方案[19]

Pyinstaller 可以将 Python 脚本转换为 Windows 可执行文件。为什么实际没问题的代码,却可能被检测为病毒呢?如何避免被防病毒软件误伤呢?文章介绍的解决方案有:避免单文件模式、自行构建 Pyinstaller 的引导加载程序、使用代码签名证书、使用 Nuitka/Inno Setup 等替代工具。

12、Fontimize 简介|精确字体子集,仅使用你网站的字符[20]

"字体子集"指的是一个字体文件的部分,它有助于优化性能,减少下载时间。作者介绍了自己开源的用于生成字体子集的 Python 库fontimize ,可以减少字体文件约 95% 的大小。

13、GH-113464:copy-and-patch 的 JIT 编译器[21]

周刊第 27 期分享过 Python 3.13 正在开发一个 JIT 编译器的消息,现在 @brandtbucher 已经提交了 PR 啦(恰在圣诞节前)!commit 信息像是一首诗,蛮有意思。

14、消失的隐喻:Zip 和 Paste[22]

Python 中用zip 将两个列表合并,就像一个拉链, Unix 中的paste 命令可执行相同操作,它的比喻是粘贴:将一列放到另一列旁边。paste 可追溯到 1978 年,zip 则追溯到 1988 年,但现在这两个词通常被视作其它含义:paste 总是用于“复制和粘贴”,zip 是压缩文件格式。

15、40 亿个 IF 语句[23]

作者做了一个看似很无聊的尝试,成功将 40 亿个 if 语句写入到 40GB 文件中,可以快速判断任意 32 位数字是偶数还是奇数。这当然是没有现实用处的,但阅读文章你会了解做成这件事并不简单:如何高效写出这么多 if 语句?如何控制文件大小避免编译错误?如何加载和执行才能提升性能?

Python潮流周刊每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)[24]

️项目&资源

1、nicegui:使用 Python 开发 Web 用户界面[25]

一个基于 Python 的 UI 框架,可以创建按钮、对话框、Markdown、3D 场景、绘图等前端标准元素,内置定时器定时刷新数据,支持 Tailwind CSS 自动补全,支持在 Jupyter Notebook 运行。(star 6.2K)

2、csvkit:用于转换和处理 CSV 的命令行工具[26]

一套用于转换和处理 CSV 的命令行工具,一行命令实现一种常见功能,包括 Excel 转 CSV、JSON 转 CSV、CSV 转 JSON、打印列名、查找匹配单元格的行、生成统计信息、使用 SQL 方式查询表数据、导入和查询数据库数据。(star 5.7K)

# 从 PostgreSQL 中提取数据到 CSV 文件
sql2csv --db postgresql:///database --query "select * from data" > new.csv

3、evue:基于 html/css 的高性能 GUI 框架[27]

基于 Flutter/LVGL 开发,支持多种操作系统,支持深色/浅色主题,支持响应式。采用编译时代码生成技术,性能卓越;原生支持 MVVM, 数据驱动 UI。

Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来_第3张图片

evue拖拽生成计算器

4、JARVIS:自己的个人语音助手[28]

开发个人语音助手,将你的语音转成文本给 GPT-3 以生成响应,使用 ElevenLabs 将大模型的响应转为语音,使用 Pygame 播放,使用 Taipy 呈现在网页上。

5、Gooey:只需一行即可将几乎任何 Python 命令行程序转换为完整的 GUI 程序[29]

你敢相信么,只需加上这个库的一行装饰器代码,就能将 CLI 程序转换成用户友好的 GUI 程序?这个项目已存在多年,star 数很多。(star 20K)

6、mod:Mojo 的包管理器工具[30]

Mojo 还没有官方的包管理工具,因此作者用 Python 开发了一个。主要借鉴 Rust cargo 和 Python poetry ,规划提供的能力是:mod = cargo + rustup + poetry + pyenv。

7、canopy:由 Pinecone 提供支持的 RAG 框架和上下文引擎[31]

建立在 Pinecone 矢量数据库之上的 RAG 框架,只需简单的命令即可与文档数据聊天。包含文本数据分块与嵌入、聊天记录管理、查询优化、上下文检索(包括提示工程)和增强生成等功能。

Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来_第4张图片

canopy的流程示意图

8、toogether-backend:Django REST 社交约会 APP 项目[32]

手机端社交约会 APP 项目,这是后端程序。使用 Django 框架,使用 Gdal、Geos 和 Postgis 进行地理定位。支持推荐匹配、聊天、群聊等功能。

9、DouyinLiveRecorder: 可循环值守和多人录制的直播录制软件[33]

支持抖音、Tiktok、快手、虎牙、斗鱼、B站、小红书等平台直播录制,抓取多平台直播源地址,抖音无水印解析,快手无水印解析。基于 FFmpeg 实现,支持自定义配置录制以及直播状态推送。

10、StreamDiffusion:用于实时交互式生成的管道级解决方案[34]

使用创新的方案,为当前基于扩散的图像生成技术引入了显著的性能增强。(star 6.4K)

11、sqlglot:SQL 解析器和转译器[35]

一个无依赖的 SQL 解析器、转译器、优化器和引擎。可用于格式化 SQL 或在 20 种不同的方言之间进行翻译,例如 DuckDB、Presto / Trino、Spark / Databricks、Snowflake 和 BigQuery。(star 4.4K)

12、texify:输出 LaTeX 和 Markdown 的数学 OCR 模型[36]

将包含数学公式的图像或 pdf 转换为 Markdown 和 LaTeX 格式,可以在 CPU、GPU 或 MPS 上运行。与同类的 Pix2texnougat 项目不同,它支持更多样化的 Web 场景。

13、talebook:一个简单的在线版个人书库[37]

一个基于 Calibre 的个人图书管理系统,支持在线阅读。后端采用 Tornado 框架,前端采用 Vue.js 和 Readium.js。界面美观,支持多用户、在线阅读、批量导入、邮件推送、书籍信息自动更新、私人模式等功能。(star 2K)

Python 潮流周刊#33:FastAPI 很好,Flask 也没死,它们都有未来_第5张图片

talebook界面

播客&视频

1、为什么 Python, Go, Rust, Kotlin 没有三元运算符?[38]

这是 UP 主@今天晚放学 基于我的文章制作的视频,算得上是一份 2024 年元旦贺礼了!相信很多读者已经看过文章版[39](毕竟上期周刊我还心血来潮分享过),但我还是推荐你再看看这则视频版。另外,作者的“编程美学”系列视频,做的真不错。

欢迎订阅

  • 微信公众号[40]:除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群)

  • 博客[41] 及 RSS[42]:我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔。

  • 邮件[43] 及 RSS[44]:在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求。

  • Github[45]:你可以获取本周刊的 Markdown 源文件,做任何想做的事!

  • Telegram[46]:除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯。

  • Twitter[47]:我的关注列表里有大量 Python 相关的开发者与组织的账号。

参考资料

[1]

投稿: https://github.com/chinesehuazhou/python-weekly

[2]

电报频道: https://t.me/pythontrendingweekly

[3]

Flask 已死,FastAPI 是未来: https://zhuanlan.zhihu.com/p/672806587

[4]

Flask 已死,FastAPI 永生: https://greyli.com/flask-fastapi-2023/

[5]

理性参与讨论《Flask 已死,FastAPI 永生》: https://zhuanlan.zhihu.com/p/673847164

[6]

Python + Flask 打造属于自己的 RSS 安全信息流: https://xz.aliyun.com/t/12980

[7]

Microdot:又一个 Python Web 框架: https://blog.miguelgrinberg.com/post/microdot-yet-another-python-web-framework

[8]

周末 AI 项目:在 2004 年的诺基亚 9500 上运行 7B 大型语言模型: https://ai.plainenglish.io/a-weekend-ai-project-running-a-7b-large-language-model-on-a-nokia-9500-from-2004-04f77e123194

[9]

Python Asyncio 之常见的三个坑: https://so1n.me/2023/12/28/python_asyncio_lib_how_to_use_it_correctly/

[10]

Bash、Lua、Python 和 Rust 的梦幻岛冒险: https://dev.to/proteusiq/to-code-and-beyond-a-neverland-adventure-in-bash-lua-python-and-rust-1jon

[11]

数据兔子洞:爱丽丝从 Pandas 到 DuckDB 仙境的冒险: https://dev.to/proteusiq/down-the-data-rabbit-hole-alices-adventure-from-pandas-to-duckdb-wonderland-25h0

[12]

YAML、Python 和 Holy Graal: https://yamlscript.org/posts/advent-2023/dec-21/

[13]

YAMLScript: https://yamlscript.org/

[14]

“Python -m”:最酷的 Python 标记,真的值得更多关注: https://www.blog.dailydoseofds.com/p/python-m-the-coolest-python-flag

[15]

Python 中 -m 的典型用法、原理解析与发展演变: https://pythoncat.top/posts/2019-11-10-m

[16]

Python CI 的初学者指南: https://switowski.com/blog/ci-101/

[17]

Python Type Hints 简明教程(基于 Python 3.12): https://zhuanlan.zhihu.com/p/464979921

[18]

JayYoung2021: https://github.com/JayYoung2021

[19]

Pyinstaller EXE 被检测为病毒?解决方案和替代方案: https://coderslegacy.com/pyinstaller-exe-detected-as-virus-solutions/

[20]

Fontimize 简介|精确字体子集,仅使用你网站的字符: https://daveon.design/introducing-fontimize-subset-fonts-to-exactly-and-only-your-websites-used-characters.html

[21]

GH-113464:copy-and-patch 的 JIT 编译器: https://github.com/python/cpython/pull/113465

[22]

消失的隐喻:Zip 和 Paste: https://www.jefftk.com/p/losing-metaphors-zip-and-paste

[23]

40 亿个 IF 语句: https://andreasjhkarlsson.github.io//jekyll/update/2023/12/27/4-billion-if-statements.html

[24]

Python 潮流周刊第一季精华合集(1~30): https://pythoncat.top/posts/2023-12-11-weekly

[25]

nicegui:使用 Python 开发 Web 用户界面: https://github.com/zauberzeug/nicegui

[26]

csvkit:用于转换和处理 CSV 的命令行工具: https://github.com/wireservice/csvkit

[27]

evue:基于 html/css 的高性能 GUI 框架: https://github.com/scriptiot/evue

[28]

JARVIS:自己的个人语音助手: https://github.com/AlexandreSajus/JARVIS

[29]

Gooey:只需一行即可将几乎任何 Python 命令行程序转换为完整的 GUI 程序: https://github.com/chriskiehl/Gooey

[30]

mod:Mojo 的包管理器工具: https://github.com/better-mojo/mod

[31]

canopy:由 Pinecone 提供支持的 RAG 框架和上下文引擎: https://github.com/pinecone-io/canopy

[32]

toogether-backend:Django REST 社交约会 APP 项目: https://github.com/damianstone/toogether-backend

[33]

DouyinLiveRecorder: 可循环值守和多人录制的直播录制软件: https://github.com/ihmily/DouyinLiveRecorder

[34]

StreamDiffusion:用于实时交互式生成的管道级解决方案: https://github.com/cumulo-autumn/StreamDiffusion

[35]

sqlglot:SQL 解析器和转译器: https://github.com/tobymao/sqlglot

[36]

texify:输出 LaTeX 和 Markdown 的数学 OCR 模型: https://github.com/VikParuchuri/texify

[37]

talebook:一个简单的在线版个人书库: https://github.com/talebook/talebook

[38]

为什么 Python, Go, Rust, Kotlin 没有三元运算符?: https://www.bilibili.com/video/BV1v64y1J7hS

[39]

文章版: https://pythoncat.top/posts/2023-04-03-condition

[40]

微信公众号: https://img.pythoncat.top/python_cat.jpg

[41]

博客: https://pythoncat.top

[42]

RSS: https://pythoncat.top/rss.xml

[43]

邮件: https://pythoncat.substack.com

[44]

RSS: https://pythoncat.substack.com/feed

[45]

Github: https://github.com/chinesehuazhou/python-weekly

[46]

Telegram: https://t.me/pythontrendingweekly

[47]

Twitter: https://twitter.com/chinesehuazhou

50fda53c3f6079edd2fa9c7c0b357c42.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

 

你可能感兴趣的:(python,fastapi,flask,开发语言,后端)