Flask:为什么图像传输速度如此之慢?

时间:2016-05-13 16:36:55

标签: python flask

我写了一个简单的Flask应用程序,它将从视频源返回最新的图像。视频源正在线程上运行。 Flask appp与gevent一起部署。客户端每5秒发出一次GET请求(当前为5秒,因为图像传输速度很慢)。图像在50到60 KB之间,通常需要3到5秒才能传输。这是一个本地网络,所以我希望速度更快。我应该注意一些优化吗?

作为旁注,我还使用了Flask-SocketIO网页框,并且传输速度也有同样的问题。

应用代码:

from gevent import monkey
monkey.patch_all()
from gevent.wsgi import WSGIServer
from flask import Flask, send_file, render_template
import threading
from cStringIO import StringIO

app = Flask(__name__)

img = StringIO()

def save_video():
    global img
    jpg_frame = some_image_source()
    img.reset()
    img.write(jpg_frame)
    img.truncate()


@app.route("/")
def hello():
    return render_template('index.html')


@app.route('/image<rand_num>')
def get_image(rand_num):
    global img
    new_img = StringIO(img.getvalue())
    return send_file(new_img, mimetype='image/jpg')


if __name__ == "__main__":
    imgthread = threading.Thread(target=save_video)
    imgthread.daemon = True
    imgthread.start()
    http_server = WSGIServer(('0.0.0.0', 9090), app)
    http_server.serve_forever()

我使用随机数发送请求,以便浏览器不会获取缓存的图像。我在HTML正文中的客户端代码(头只有标题):

<script>
    setInterval(function() {
        var myImageElement = document.getElementById('myImage');
        myImageElement.src = '/image' + Math.random();
    }, 5000);
</script>
<img src="/image0" id="myImage" />

0 个答案:

没有答案