Python / Flask:一次只能有一个用户调用端点

时间:2018-04-19 20:49:22

标签: python flask

我有一个使用Python / Flask的API构建,我有一个名为/build-task的端点,由系统调用,这个端点需要大约30分钟才能运行。

我的问题是,如果/build-task端点已经启动并运行,该如何锁定它?所以其他用户或系统也不能调用此端点。

2 个答案:

答案 0 :(得分:2)

你有一些解决这个问题的方法:

1 - 您可以创建会话对象,在对象中保存标志并检查端点是否已在运行并做出相应的响应。

2 - 在数据库上标记,检查端点是否已在运行并做出相应的响应。

答案 1 :(得分:2)

最好的方法是将数据保存到数据库中并在运行端点函数之前进行检查。

这里还有另一个使用Flask的'app'存储时间的快速方法:

from flask import Flask, session
from datetime import datetime, timedelta

app = Flask(__name__)

app.secret_key = 'Wow a Secret!'


@app.route('/build-task')
def build_task():
    print ()
    if datetime.now() - app.task_start_time > timedelta(seconds=10):
        app.task_start_time = datetime.now()
        return "I am running a great task now :)"
    else:
        return "Cannot help you!<br>You will have to wait until we reach 10 seconds: " + str(datetime.now() - app.task_start_time)

if __name__ == '__main__':
    app.task_start_time = datetime.now() - timedelta(seconds=10)
    app.run(debug=True)