Flask фоновая обработка после шаблона рендера - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь отправить форму, где пользователь может потенциально загрузить несколько файлов, из которых запускается фоновый процесс, который займет несколько минут. Проблема, с которой я столкнулся на данный момент, заключается в том, что когда пользователь нажимает кнопку «Отправить», в течение нескольких секунд при загрузке файлов у него ничего не происходит. Есть ли способ, которым я могу перенаправить на (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

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