Выполнение параллельной задачи, которая может завершиться после возврата в Python - PullRequest
0 голосов
/ 16 мая 2018

Мой REST-запрос в Python с использованием 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 голосов
/ 16 мая 2018

Вы можете использовать поток для функции 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...