![](/img/trans.png)
[英]Reading pickle performs worse in Python 3.6 than in Python 2.7
[英]FastAPI performs worse than Flask
以前我使用 Flask 結合 Gunicorn 在 Redhat OpenShift 中開發和部署 API。 多個來源聲稱 FastAPI 更快,所以我想我會在 Flask 和 FastAPI 中制作兩個簡單的 API,以便能夠比較它們。
Flask寫的代碼是:
from flask import Flask, request, json, Response, send_file
app = Flask(__name__)
def find_sums_single():
def cpu_bound(number):
return sum(i * i for i in range(number))
numbers = [5_000_000 + x for x in range(5)]
for number in numbers:
cpu_bound(number)
@app.route("/loadtest/", methods=['GET'])
def loadtest():
find_sums_single()
return {"Message:": "Succesfully performed loadtest"}
並開始於:
PORT=${1:-5757}
gunicorn --preload --timeout=60 -b '0.0.0.0:'+$PORT --workers=1 wsgi:app
用FastAPI編寫的代碼是:
from fastapi import Request, FastAPI, status
app = FastAPI(debug=False)
def find_sums_single():
def cpu_bound(number):
return sum(i * i for i in range(number))
numbers = [5_000_000 + x for x in range(5)]
for number in numbers:
cpu_bound(number)
@app.get("/loadtest/", status_code=200)
def loadtest():
find_sums_single()
return {"message": "Succesfully performed loadtest"}
並開始於:
uvicorn api:app --host 0.0.0.0 --port 5757
或者
gunicorn api:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:5757
我總是使用一個 worker,因為我喜歡讓 OpenShift 來處理放大/縮小。
使用 Lokust(時間為 2 分鍾)我得到以下結果:
在這里,FastAPI 看起來並不快。 我做錯什么了嗎?
應該在 fastapi 中的路由 def 之前有一個異步以利用異步請求,這是 fastapi 在生產中更快的主要原因之一(但僅當同時發出多個請求時)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.