在烧瓶中处理旧请求时,如何保存新请求?

时间:2020-10-23 05:38:57

标签: python flask heroku request semaphore

我在flask中创建了一个python应用程序。这是代码的斯凯尔顿

app = Flask(__name__)

@app.route('/', methods=['GET'])
def authentication():
    '''athentication process'''
    return 'authenticated'

因此,当用户调用应用程序时,它将进行身份验证。但是,如果两个用户同时或在处理一个身份验证时打电话给我,我想保留新请求,直到旧的请求结束,然后我要启动新请求。我已经尝试过semaphore,但是没有用。这是我尝试过的

@app.route('/', methods=['GET'])
    def authentication():
        sem.acquire()
        '''athentication process'''
        sem.release()
        return 'authenticated'

,我已经在Heroku中部署了它。知道我该如何实现吗?

PS:如果至少无法执行此操作,那么我想响应另一个请求正在处理的新请求,然后过一段时间再试

1 个答案:

答案 0 :(得分:4)

简短的回答:不用担心。

这是Web服务器的工作。当您将应用程序托管在Apache,Nginx等任何服务器中时,服务器会创建Flask应用程序的多个进程。当请求出现时,服务器程序会将其转发到任何空闲进程,如果没有空闲进程,则服务器会将请求排队直到一个过程变得免费。 这是HTTP服务器工作方式的高级概述。