Обход героя с запросом таймаута с помощью ajax - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть приложение фляги, которое имеет форму на домашней странице, при отправке оно запускает скрипт Python и возвращает страницу результатов после завершения.Проблема в том, что когда параметры заданы высокими в форме, запуск сценария занимает более 30 секунд, а время ожидания истекает.То, что у меня есть в данный момент, это когда форма отправляется на страницу ожидания.

@app.route('/')
def index():

    return render_template('index.html')


@app.route('/run', methods=['GET', 'POST'])

def test():
    import loopTest



    if request.method == 'GET':

        loopTest.init()
        return 'done'
    if request.method == 'POST':
        loopTest.episodes_form = request.form.get('episode')
        loopTest.max_steps_form = request.form.get('max_steps')
        loopTest.per_step_cost = request.form.get('per_step_cost')
        loopTest.goal_reward = request.form.get('goal_reward')
        loopTest.gamma_form = request.form.get('gamma')
        loopTest.epsilon_form = request.form.get('epsilon')
        loopTest.epsilon_form_decay = request.form.get('epsilon_decay')
        loopTest.alpha_form = request.form.get('alpha')
        loopTest.alpha_form_decay = request.form.get('alpha_decay')
        return render_template('waiting.html')




@app.route('/success', methods=['GET', 'POST'])
def dealy():

    return render_template("result.html")

Затем на ожидающей странице с javascript он ожидает завершения сценария, получая сообщение.Как только это сообщение получено, оно перенаправляется на страницу результатов.Я думал, что это сработает, но через 30 секунд герою все еще не хватает.

     var request = new XMLHttpRequest();
    request.open('GET', '/run');

    request.onload=function() {

        if (request.status === 200 && request.responseText === 'done') {
            // long process finished successfully, redirect user
            window.location = '/success';
        } else {
            // ops, we got an error from the server
            alert('Something went wrong.');
        }
    }

    request.onerror = function() {
        // ops, we got an error trying to talk to the server
        alert('Something went wrong.');
    };
request.send();

Есть ли способ обойти эту проблему с помощью ajax?Я посмотрел на Celery для выполнения фоновых задач, но слишком много смотрю на то, что я пытаюсь сделать.

В качестве альтернативы я думал о создании виртуальной машины в облаке Google или AWS и запуске ее.оттуда.

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