我可以在后台线程中处理对 Flask 服务器的 POST 请求吗?
Posted
技术标签:
【中文标题】我可以在后台线程中处理对 Flask 服务器的 POST 请求吗?【英文标题】:Can I handle POST requests to Flask server in background thread? 【发布时间】:2021-09-30 11:05:24 【问题描述】:我知道如何在主线程中接收来自 POST 请求的数据:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/", methods=['POST'])
def parse_request():
my_value = request.form.get('value_key')
print(my_value)
return render_template("index.html")
但我可以在后台线程中执行此操作以避免阻塞 UI(呈现 index.html)吗?
【问题讨论】:
你为什么不先试试呢?那么当你遇到问题时,我们可以帮助你解决这个问题 【参考方案1】:我假设您希望您的请求的 html 呈现和处理同时运行。所以,你可以试试 Python https://realpython.com/intro-to-python-threading/ 中的线程。
假设你有一个对请求值执行一些处理的函数,你可以试试这个:
from threading import Thread
from flask import Flask, render_template, request
def process_value(val):
output = val * 10
return output
app = Flask(__name__)
@app.route("/", methods=['POST'])
def parse_request():
my_value = request.form.get('value_key')
req_thread = Thread(target=process_value(my_value))
req_thread.start()
print(my_value)
return render_template("index.html")
线程将允许process_value
在后台运行
【讨论】:
我刚刚意识到 Flask 默认在后台运行,并且我可以有多个 @app.route('/') 方法不一定应该返回一些东西......但还是谢谢你的回答以上是关于我可以在后台线程中处理对 Flask 服务器的 POST 请求吗?的主要内容,如果未能解决你的问题,请参考以下文章