fastapi python 并发_如何评价最近爆红的FastAPI?

答:未来可期、事在人为

从前景考虑,fastapi是python web的未来。但它的发展同时也受制于python web的发展,如果python web在未来式微,fastapi是难以力挽狂澜的。

注:1月17日更新了CBV实现

注:12月4日更新了简单的性能测试

1.性能提升

注: 以下针对生产环境的大型项目而言

fastapi利用异步和轻量级的特点,大大提升了性能。但异步应用到实际中,并不是一件容易的事。fastapi的异步不算难写,逻辑不复杂的话,闭着眼睛加几个await很简单。但如果涉及到复杂系统。一处异步,处处异步。到底要不要用可能就见仁见智了。

轻量级同时也代表着和flask一样,很多东西需要自己diy。而不是像django一样一站式解决。所以fastapi可能逐渐接过flask的位置,但还是难以对django发起挑战。

最重要的一点还是,选了python作为后端。可能打一开始就不是对性能有多敏感。而是看中python的开发效率和生态。如果从兼顾开发效率+性能的角度出发,那么fastapi极大程度上会遇到来自go的强力竞争。只有再兼顾上python现有生态,fastapi才会有很大的优势。

我们可以假想一个现有python项目,遇到了性能瓶颈,但不想脱离python的环境,或者不想承受更换语言的成本。那么fastapi是个很好的未来。

  1. API文档、类型检测以及依赖注入

fastapi完全拥抱了typing类型系统,高度整合了openapi(swagger ui),正如他的名字一样fastapi,从api开发的角度来说,无论是性能还是开发效率,它都足够”fast”。为api文档提供了非常多的支持。无需任何配置,后端只要把endpoint写出来,一份详尽的api文档就会自动生成。对于小型项目来说绝对是巨大优势。

类型检测和依赖注入是api文档的基石 ,它们重点在于围绕框架的”感知力”。inspect抓endpoint的参数,明确的知道每个api接口需要什么,返回什么。这会让你感觉这个框架真的很有灵性。对于这方面我个人绝对是赞不绝口的。

  1. 简单与简洁

会用flask就会fastapi,fastapi的学习曲线十分平滑。从下至上有很多值得学习参透的。非常建议有空的同学过一遍starlette,uvicorn,fastapi的源码。加起来也没有django多。

  1. 相关生态和社区还未成熟

python的异步发展略为缓慢,仅仅fastapi还不能撑起一片天。例如现在还没有完全可靠的异步orm。不少东西还需要自己造轮子。在小项目上,这可能影响不是很大。直接写代码可能比配置插件来的快。但将很大程度上影响它被采用到线上生产环境。

你可以将fastapi看成新出炉的flask plus。如果你有采用flask的理由,那么你同样有将来采用fastapi的理由。

关于异步ORM

SQLAlchemy 1.4.0b1 Released

NOVEMBER 02, 2020 permalinkby Mike BPython asynciosupport is now fully integrated for both Core and ORM, to provide one of the first fully capable Python object relational mappers for asyncio

The asyncio should be regarded as alpha levelfor the 1.4 release of SQLAlchemy. API details are subject to changeat any time.

等就完事了。

Original: https://blog.csdn.net/weixin_36434967/article/details/114169413
Author: L NEO
Title: fastapi python 并发_如何评价最近爆红的FastAPI?



相关阅读

Title: Sonar 扫描之SonarScanner介绍

SonarScanner用于在构建系统没有指定scanner时使用。

项目配置

在你的项目根目录中创建一个名为 sonar-project.properties的配置文件

# 在给定的SonarQube实例中必须保持唯一
sonar.projectKey=my:project

# --- 可选属性 ---
# 默认值为projectKey
#sonar.projectName=My project
# 默认值为'not provided'
#sonar.projectVersion=1.0

# 默认为 . 路径相对于sonar-project.properties而言
#sonar.sources=.

# 源代码文件编码. 默认为系统默认编码
#sonar.sourceEncoding=UTF-8

从 zip 文件运行 SonarScanner

要从 zip 文件运行 SonarScanner,遵循下列步骤操作:

从 Docker 镜像运行 SonarScanner

使用以下命令,使用 SonarScanner Docker 镜像进行扫描:

docker run \
    --rm \
    -e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
    -e SONAR_LOGIN="myAuthenticationToken" \
    -v "${YOUR_REPO}:/usr/src" \
    sonarsource/sonar-scanner-cli

扫描 C、C++ 或 ObjectiveC 项目

示例项目

sonar-project.properties 的替代品

如果在项目的根目录下无法创建 sonar-project.properties 文件,有以下几种选择:

  • 可以通过命令行直接指定属性。例子:
sonar-scanner -Dsonar.projectKey=myproject -Dsonar.sources=src1
  • 属性 project.settings 可用于指定项目配置文件的路径(此选项与 sonar.projectBaseDir属性不兼容)。例子:
sonar-scanner -Dproject.settings=../myproject.properties
  • 从 SonarScanner 2.4 开始,可以通过 sonar.projectBaseDir属性设置要分析项目的根文件夹。如果未在命令行中指定 sonar.projectKey,则该文件夹必须包含 sonar-project.properties文件。可以在此项目配置文件中或通过命令行参数定义其他参数。

注意:命令行参数优先于 sonar-project.properties 配置,也就是说,当命令行和 sonar-project.properties 存在相同参数配置的情况下,以命令行的参数配置为准

可选分析目录

如果要分析的文件不在运行 sonar-scanner程序时所在目录,那么需要使用 sonar.projectBaseDir属性将分析移动到待分析文件所在目录,否则会导致分析失败,因为程序默认在当前目录下执行扫描。例如,在 jenkins/jobs/myjob/workspace目录下运行 sonar-scanner,但要分析的文件存在 /home/ftpdrop/cobol/project1目录, sonar-project.properties配置如下:

sonar.projectBaseDir=/home/ftpdrop/cobol/project1
sonar.sources=src

高级Docker配置

以下部分提供了使用Docker运行 sonar-scanner时的高级配置选项

使用 --user选项,以非root用户运行Docker镜像,例如:

docker run \
    --rm \
    --user="$(id -u):$(id -g)" \
    -e SONAR_HOST_URL="http://${SONARQUBE_URL}"  \
    -v "${YOUR_REPO}:/usr/src" \
    sonarsource/sonar-scanner-cli

注意:以非root用户运行容器时,确保该用户对挂载的目录(比如代码目录或者scanner缓存目录)有读写权限,否则可能会遇到权限相关问题。

为了防止SonarScanner在每次运行扫描时重新下载语言分析器,可以挂载一个供scanner存储下载内容的目录,以便在scanner运行期间可以重用下载的内容。在某些CI系统上,还需要将此目录添加到CI缓存配置中。以下命令将在运行之间存储和使用缓存:

docker run \
    --rm \
    -v ${YOUR_CACHE_DIR}:/opt/sonar-scanner/.sonar/cache \
    -v ${YOUR_REPO}:/usr/src \
    -e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
    sonarsource/sonar-scanner-cli

还可以使用 SONAR_USER_HOME环境变量更scanner存储下载内容的位置。

故障排除

Java heap space error or java.lang.OutOfMemoryError

通过 SONAR_SCANNER_OPTS环境变量增加内存

Linux:

export SONAR_SCANNER_OPTS="-Xmx512m"

Windows:

set SONAR_SCANNER_OPTS=-Xmx512m

Unsupported major.minor version

升级用于分析的Java版本,或使用一个本机包(嵌入自己的Java运行时)

Property missing: `sonar.cs.analyzer.projectOutPaths’. No protobuf files will be loaded for this project.

Scanner CLI无法分析.NET项目。请用SonarScanner for .NET。

Original: https://www.cnblogs.com/shouke/p/15885101.html
Author: 授客
Title: Sonar 扫描之SonarScanner介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/310574/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总