У меня есть приложение Flask, работающее в бэкэнде и доставляющее некоторые данные клиентскому веб-приложению через некоторые конечные точки. Э.Г.
@app.route('/extract_entities_from_matching_docs', methods=['POST'])
def extract_entities_from_matching_docs():
data = request.form
entities = storage.get_entities_in_docs_by_keywords(data[“keywords”])
return jsonify(entities)
Это только пример, но иногда такие методы требуют слишком много времени для обработки, и пользователь может захотеть отменить обработку от клиента (например, представьте, что у вас есть кнопка «Отмена» на клиент).
Мой вопрос: как я могу отменить запущенный процесс в бэкэнде из внешнего интерфейса? Я подумал, что могу включить флаг в циклы, поэтому, если флаг установлен в значение true, он продолжает цикл и обработку, в противном случае он просто возвращается. Но проблема с такой простой альтернативой заключается в следующем: что если клиент просто закрывает вкладку браузера? Процесс будет продолжаться на бэкэнде без какой-либо причины. Может быть, отправляя клиенту другой флаг каждые x минут, чтобы сервер знал, что клиент ожидает ответа. Но, возможно, есть более элегантное решение, которое я игнорирую.
Я не очень люблю бэкэнд, но мне нужно решить это. Итак, вы можете предложить мне другую альтернативу? Что почитать? Или вы знаете, есть ли хорошая практика для решения этой проблемы?