gpt4 book ai didi

python - 如何在 Flask 中处理长 SQL 查询?

转载 作者:行者123 更新时间:2023-11-28 20:16:32 25 4
gpt4 key购买 nike

我有一个 Flask 网络应用程序,它可能需要通过 Sqlalchemy 给定用户输入来执行一些繁重的 SQL 查询。我想为查询设置一个超时,假设是 20 秒,这样如果查询花费的时间超过 20 秒,服务器将向用户显示一条错误消息,以便他们稍后重试或使用较小的输入。

我已经尝试使用 multiprocessingthreading 模块,都使用 Flask 开发服务器和 Gunicorn 都没有成功:服务器一直阻塞并且没有返回错误消息。您将在下面找到代码的摘录。

如何以用户友好的方式在 Flask 中处理慢速 SQL 查询?

谢谢。

from multiprocessing import Process

@app.route("/long_query")
def long_query():
query = db.session(User)

def run_query():
nonlocal query
query = query.all()

p = Process(target=run_query)
p.start()

p.join(20) # timeout of 20 seconds
if p.is_alive():
p.terminate()
return render_template("error.html", message="please try with smaller input")

return render_template("result.html", data=query)

最佳答案

我建议使用 Celery 或类似的东西(人们使用 python-rq 来进行简单的工作流程)。查看有关 Celery 的 Flask 文档:http://flask.pocoo.org/docs/0.12/patterns/celery/

至于处理长时间运行的查询的结果:您可以创建一个端点来请求任务结果,并让客户端应用程序定期检查此端点,直到结果可用。

关于python - 如何在 Flask 中处理长 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com