我正在开始使用 Flask,并发现一些奇怪的延迟问题。
Flask 代码是最简单的“Hello World!” 如下:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
它使用VM和Gunicorn安装在远程Ubuntu 18服务器上,如下所示:
gunicorn -b 0.0.0.0:5000 app:app --reload
Run Code Online (Sandbox Code Playgroud)
我正在使用Python“requests”库在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)
Run Code Online (Sandbox Code Playgroud)
问题是调用远程函数的时间总是在 0.7 秒到 1 秒之间,对于这样一个简单的函数来说,这似乎很慢。通过阅读类似的部署,我的印象是这个调用应该要快得多。
这个功能可以加速吗?
我努力了:
这些都没有任何区别。
另外,服务器在澳大利亚,而我在英国。这会导致速度变慢吗?
是的,绕过半个地球(尤其是澳大利亚,据我所知)会导致延迟。只需从芬兰这里使用 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
Run Code Online (Sandbox Code Playgroud)
在我的 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 $
Run Code Online (Sandbox Code Playgroud)
对于uwsgi应用程序服务器 ( uwsgi --http :5000 --master --wsgi app:app),结果类似(uwsgi它本身报告实际从代码获得响应所需的时间不到 1 毫秒),但我认为如果并发规模更大,结果会更好。
我最好的猜测是你的结果可能是缓慢的 VPS和环游世界的复合效应。
| 归档时间: |
|
| 查看次数: |
3898 次 |
| 最近记录: |