Я пытаюсь отправить форму, где пользователь может потенциально загрузить несколько файлов, из которых запускается фоновый процесс, который займет несколько минут. Проблема, с которой я столкнулся на данный момент, заключается в том, что когда пользователь нажимает кнопку «Отправить», в течение нескольких секунд при загрузке файлов у него ничего не происходит. Есть ли способ, которым я могу перенаправить на (stati c*) удерживающую страницу, пока происходит загрузка файлов и обработка, а затем, когда фоновый процесс завершается, это создает новый шаблон?
Использование Python 3.6.1 и Flask 0.12.2.
* Сейчас я говорю stati c, но в какой-то момент в будущем я sh буду использовать AJAX для обновления этой страницы чтобы дать пользователю больше информации
NB Я видел несколько похожих вопросов, и общий ответ - использовать такой модуль, как Celery, для выполнения асинхронных операций c. К сожалению, у меня нет доступа к Celery, так как я не могу загрузить новые пакеты из-за корпоративной политики.
main.py:
from flask import Flask, request, render_template, url_for, redirect
app = Flask(__name__, static_url_path = "/static", static_folder = "static")
@app.route("/", methods=['GET'])
def home():
return render_template("index.html")
@app.route("/in_progress", methods=['GET', 'POST'])
def in_progress():
if request.method == 'GET':
# Do the background processing here
return render_template('result.html') # This is the final part of the process
elif request.method == 'POST':
# Upload the files and do some pre-processing with the form
# This takes a couple of seconds so appears to not be doing anything for the user
# Want to render the GET 'in_progress.html' template at the top of this to give a better user experience
return render_template('in_progress.html') # Reloads same page using GET
index. html:
...some irrelevant HTML
<form action="{{ url_for('in_progress') }}" method="POST" id="form" name="form" enctype="multipart/form-data">
...other irrelevant HTML