执行在Python中返回后可能完成的并行任务

时间:2018-05-16 17:44:56

标签: python flask parallel-processing

我在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)的结果,即使另一个尚未完成。

1 个答案:

答案 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搜索将会运行。