gpt4 book ai didi

python - 简单的 Flask 项目运行缓慢

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:51 27 4
gpt4 key购买 nike

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

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

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

并使用虚拟机和 Gunicorn 安装在远程 Ubuntu 18 服务器上,如下所示:

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

我在Windows 10下使用Python'requests'库调用服务器,如下:

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
  • 从浏览器调用网址

这些都没有任何区别。

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

最佳答案

是的,绕地球一圈(据我所知,尤其是澳大利亚)会导致延迟。只需在芬兰这里使用 Speedtest.net 即可显示到悉尼的延迟为 330 毫秒,到我最近的测试服务器为 5 毫秒。

我在阿姆斯特丹的 Digital Ocean 机器上复制了您的步骤:

~# 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 在世界范围内传播的复合效应。

关于python - 简单的 Flask 项目运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55022765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com