相关疑难解决方法(0)

架构 Flask 与 FastAPI

我一直在修改 Flask 和 FastAPI 以了解它如何充当服务器。
我想知道的主要事情之一是 Flask 和 FastAPI 如何处理来自多个客户端的多个请求。
特别是当代码有效率问题时(数据库查询时间长)。

所以,我尝试制作一个简单的代码来理解这个问题。
代码很简单,当客户端访问路由时,应用程序休眠10秒才返回结果。
它看起来像这样:

快速API

import uvicorn
from fastapi import FastAPI
from time import sleep
app = FastAPI()

@app.get('/')
async def root():
    print('Sleeping for 10')
    sleep(10)
    print('Awake')
    return {'message': 'hello'}

if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8000)
Run Code Online (Sandbox Code Playgroud)

烧瓶

from flask import Flask
from flask_restful import Resource, Api
from time import sleep

app = Flask(__name__)
api = Api(app)

class Root(Resource):
    def get(self):
        print('Sleeping for 10')
        sleep(10)
        print('Awake')
        return {'message': 'hello'}

api.add_resource(Root, …
Run Code Online (Sandbox Code Playgroud)

python wsgi flask asgi fastapi

24
推荐指数
4
解决办法
7440
查看次数

姜戈 + 独角兽

我正在尝试将 Django 3.0 与 Uvicorn 一起使用并在开始时得到它:

INFO:     Started server process [96219]
INFO:     Waiting for application startup.
INFO:     ASGI 'lifespan' protocol appears unsupported.
INFO:     Application startup complete.
Run Code Online (Sandbox Code Playgroud)

我可以用--lifespan off标志关闭生命周期,但是有没有办法让它与 Django 一起工作?快速搜索 Django + lifespan 似乎没有返回任何内容。

python django uvicorn

8
推荐指数
1
解决办法
1769
查看次数

FastAPI Gunicorn Uvicorn 用于使用 Google Cloud Run 进行生产部署(压力测试)

在这里我想问你,用python运行gunicorn uvicorn和从tiangolo默认运行有什么区别?

我尝试使用JMeter线程属性对这些进行压力测试:

截图来自2021-02-18 12-29-26

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

截图来自 2021-02-18 12-20-05

从上面我尝试过:

  1. 带有 tiangolo 基础的 Dockerfile
  2. 使用 python:3.8-slim-buster 的 Dockerfile 并使用 gunicorn 命令运行它
  3. 使用 python:3.8-slim-buster 的 Dockerfile 并使用 python 运行它

这是我的案例 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)

stress-testing gunicorn fastapi uvicorn

7
推荐指数
2
解决办法
4982
查看次数

标签 统计

fastapi ×2

python ×2

uvicorn ×2

asgi ×1

django ×1

flask ×1

gunicorn ×1

stress-testing ×1

wsgi ×1