我有烧瓶应用程序,它倾听一些工作要做。这个过程很长(让我们说1分钟),我不想同时处理两个请求。烧瓶,处理请求1 by 1
如果一旦我收到请求,我会很好,我可以关闭正在收听的端口烧瓶,并在完成后再次打开。或者我可以设置一个信号灯,但我不知道如何同时运行烧瓶。
有什么建议吗?
from flask import Flask, request
app = Flask(__name__)
@app.route("/",methods=['GET'])
def say_hi():
return "get not allowed"
@app.route("/",methods=['POST'])
def main_process():
# heavy process here to run alone
return "Done"
if __name__ == "__main__":
app.run(debug=True,host='0.0.0.0')
你是如何运行烧瓶刨?直接通过烧瓶还是将它作为WSGI模块运行? –
我正在使用wsgi模块 – mosh442
在这种情况下,它可能会更复杂一点。一个WSGI服务器(取决于配置)可以并行产生多个进程,但是Python的锁只能跨线程工作,而不能跨越进程。您需要引入可以锁定的共享资源。这可能是数据库,文件或共享锁,例如[named semaphore](http://stackoverflow.com/q/2798727)。 –