我在Python中的REST请求,使用Flask,需要对数据库执行两次操作,这可能需要一段时间。
一方面,我想回答用户在他的请求中搜索的内容。另一方面,我想注册该搜索。即使我还没有注册搜索,我也想返回搜索。
代码如下所示:
from flask import Flask
from flask_cors import CORS
import requests
app = Flask(__name__)
CORS(app)
@app.route("/dictionary/<string:word>", methods=["GET"]
def search_word(word):
register_word(word)
return find_word(word)
如上所述,我如何让register_word(word)
和find_word(word)
并行运行并返回find_word(word)
的结果,即使另一个尚未完成。
答案 0 :(得分:1)
您可以使用register_word
函数的线程:
from flask import current_app
def register_word_async(app, word):
with app.app_context():
register_word(word) # call your function
def call_register_word(word):
# ...
app = current_app._get_current_object()
thr = Thread(target=register_word_async, args=[app, word])
thr.start()
return thr
@app.route("/dictionary/<string:word>", methods=["GET"]
def search_word(word):
call_register_word(word)
return find_word(word)
同时find_word
register_word
搜索将会运行。