部署使用 Uvicorn 和Tiangolo 的 Gunicorn+Uvicorn dockerized 的FastAPI 应用程序有什么区别?为什么我的结果表明,仅使用 Uvicorn 进行部署时我会得到比 Gunicorn+Uvicorn 更好的结果?
当我在 Tiangolo 的文档中搜索时,它说:
您可以使用 Gunicorn 来管理 Uvicorn 并运行多个这些并发进程。这样,您可以获得最佳的并发性和并行性。
由此,我可以假设使用这个 Gunicorn 会得到更好的结果吗?
这是我使用 JMeter 进行的测试。我将脚本部署到 Google Cloud Run,结果如下:
使用 Python 和 Uvicorn:
使用 Tiangolo 的 Gunicorn+Uvicorn:
这是我的 Python Dockerfile (Uvicorn):
FROM python:3.8-slim-buster
RUN apt-get update --fix-missing
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libgl1-mesa-dev python3-pip git
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip3 install -U setuptools
RUN pip3 install --upgrade pip
RUN pip3 install -r ./requirements.txt …Run Code Online (Sandbox Code Playgroud) 在这里我想问你,用python运行gunicorn uvicorn和从tiangolo默认运行有什么区别?
我尝试使用JMeter线程属性对这些进行压力测试:

从这些,我得到了结果::

从上面我尝试过:
这是我的案例 1(Tiangolo 基础)的 Dockerfile:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8-slim
RUN apt-get update && apt-get install wget gcc -y
RUN mkdir -p /app
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN python -m pip install --upgrade pip
RUN pip install --no-cache-dir -r /app/requirements.txt
COPY . /app
Run Code Online (Sandbox Code Playgroud)
这是我的 Dockerfile 案例 2(带有 gunicorn 命令的 Python 基础):
FROM python:3.8-slim-buster as builder
RUN apt-get update …Run Code Online (Sandbox Code Playgroud) 我有一个可以提供输出的 databricks 管道,但目前,我需要从执行管道运行 databricks,当我尝试运行它时,我的 databricks 输出没有显示在执行管道上?该管道无法显示输出吗?
这是我的 Databricks 输出结果。
[![在此处输入图像描述][1]][1]
这是我的执行管道。
runOutput如何从执行管道获取结果?