如何在Flask app(app.run)启动后执行代码

时间:2016-07-16 19:20:32

标签: python flask

Flask(python)http://blog.miguelgrinberg.com/post/video-streaming-with-flask中的视频流式应用程序运行完美。

但是我想使用一种方法来保存相机中的所有相框(我已经有了功能)。

问题是,一旦我启动Flask应用程序,我最多只能存储在localhost中打开网页时捕获的帧。我希望能够在应用程序运行时执行其他代码(保存图片),以便在我在浏览器上打开页面时保存所有图片并显示到localhost。

如何实现这些同步任务?

Flask app:

app = Flask(__name__)

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

def gen(camera):
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

@app.route('/video_feed')
def video_feed():
    return Response(gen(Camera()),
                    mimetype='multipart/x-mixed-replace; boundary=frame')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5001)
    #want to be able to run code while localhost webpage is closed

在开始时,index()被调用一次,如果我随时打开网页,video_feed()会调用gen()。如果我关闭网页,我得到error: [Errno 10053] An established connection was aborted by the software in your host machine并且.py文件崩溃,可能是因为我已经停止向客户端传输。我需要能够在客户端关闭连接后运行代码,并且仍然为下一个客户端运行应用程序。

我希望能够在应用程序仍在运行时执行代码,但是没有打开localhost网页。因此,打开网页的人会从正常代码中断一下,直到网页关闭。

0 个答案:

没有答案