Simple Flask项目运行缓慢

问题描述 投票:1回答:1

我开始使用Flask,我发现了一些奇怪的延迟问题。

Flask代码是最简单的“Hello World!”如下:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()

它使用VM和Gunicorn安装在远程Ubuntu 18服务器上,如下所示:

gunicorn -b 0.0.0.0:5000 app:app --reload

我使用Python'请求'库来调用Windows 10下的服务器,如下所示:

import requests, time

url = 'http://vps.XXXXX.ssdhosts.com.au:5000/'

t0 = time.time()
response = requests.get(url)                       
t1 = time.time()
total = t1-t0
print("Simple get request took " , total)

问题是调用远程函数的时间总是在0.7s和1s之间,这对于这样一个简单的函数来说似乎很慢。我从阅读类似部署的印象是,这个调用应该更快。

这个功能可以加速吗?

我试过了:

  • 硬编码IP地址
  • 禁用IPv6
  • 在app.run()中设置threaded = True
  • 从浏览器调用Web地址

这些都没有任何区别。

此外,当我在英国时,服务器在澳大利亚。这会导致减速吗?

python flask
1个回答
4
投票

是的,走遍全世界(特别是澳大利亚,据我所知)将导致延迟。只需在芬兰使用Speedtest.net就可以说悉尼的延迟时间为330毫秒,离我最近的测试服务器只有5毫秒。

我在阿姆斯特丹的数字海洋机器上复制了你的步骤:

~# cd $(mktemp -d)
/tmp/tmp.4ahzWvNRpX# python3.5 -m venv venv
/tmp/tmp.4ahzWvNRpX# source venv/bin/activate
(venv) /tmp/tmp.4ahzWvNRpX# pip install flask gunicorn
(venv) /tmp/tmp.4ahzWvNRpX# cat > app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()
(venv) /tmp/tmp.4ahzWvNRpX# gunicorn -b 0.0.0.0:5000 app:app --reload

在我的Mac上,使用与你相同的测试代码,我可以完全容忍60毫秒。

~/Desktop $ python3 x.py
Simple get request took  0.06290006637573242
~/Desktop $ python3 x.py
Simple get request took  0.06206989288330078
~/Desktop $ python3 x.py
Simple get request took  0.0690619945526123
~/Desktop $ python3 x.py
Simple get request took  0.06926107406616211
~/Desktop $

使用uwsgi应用程序服务器(uwsgi --http :5000 --master --wsgi app:app)的结果是相似的(uwsgi本身报告实际从代码中获得响应所需的时间不到1毫秒),但我认为它们在更大的并发规模下会更好。

我最好的猜测是你的结果区域可能是一个缓慢的VPS和世界各地的复合效应。

© www.soinside.com 2019 - 2024. All rights reserved.