无法让多个会话运行@ app.route,这会触发python脚本

时间:2019-05-09 07:58:17

标签: python flask

我正在测试一个flask应用程序,以运行一个python脚本,该脚本将生成500,000个随机数,并从该随机数中筛选出最出现的前6个数字。

我将在地址栏中键入“ http://localhost:5000/gen”,需要等待30分钟才能看到结果。一切正常。

但是,如果在第一个会话仍在运行时单击另一个浏览器选项卡以启动另一个会话“ http://localhost:5000/gen”,它将挂在那里。它只能在第一个会话完成并返回结果后运行。

由于它是Web引擎,所以我认为不应该烧瓶处理多个会话。

任何有关如何实现此目标的建议将不胜感激。

谢谢。

@app.route('/gen')
def start_gen():
    # run the python script to generate 500,000 numbers and return top 6  
    # most generated number

    results = str(gen()) 

    return render_template('results.html',the_results = results)

1 个答案:

答案 0 :(得分:1)

Flask的内置服务器仅用于开发,因此,它默认为单个线程,并且一次只能处理一个请求。

您可以set up a Standalone WSGI container服务于并发请求-这也是一种实用的部署方法。

或者,您也可以pass options to flask.Flask.run(),它将被传递到werkzeug

if __name__ == '__main__':
    app.run(threaded=True)  # run the flask server in threaded mode

if __name__ == '__main__':
    app.run(processes=10)  # run up to 10 concurrent processes