Проблема в асинхронной обработке задач Celery - PullRequest
1 голос
/ 26 июня 2019

Я новичок во Flask, в рамках POC я создаю веб-приложение, которое принимает некоторые данные и запускает длинную программу на python (это занимает 3-4 часа) для запуска на основе ввода пользователя. Теперь я прочитал, что яследует использовать сельдерей, чтобы пользователю не нужно было ждать ответа от моей программы, что займет много времени, вместо этого я могу перенаправить их на какую-то страницу.

Итак, вот моя попытка вызвать длинный процесс черезCelery

from flask import Flask,render_template
from forms import LoginForm
from test_webapp import testing_webapp
from flask import render_template, flash, redirect
from celery import Celery

app = Flask(__name__)
app.config['SECRET_KEY'] = 'This is secret key'
celery = Celery(app.name, broker= 'amqp://localhost//')

@celery.task
def call_demographic_data(brand,start_date,end_date,Country):
    '''
    This is a really long process
    '''
    testing_webapp(brand,start_date,end_date,Country)


@app.route('/index',methods=[ 'GET','POST'])
def index():
    return "Query Submitted successfully"

@app.route('/',methods=[ 'GET'])
@app.route('/input',methods=[ 'GET','POST'])
def input():
    form = LoginForm()
    if form.validate_on_submit():
        call_demographic_data.delay(form.brand.data,form.startdate.data,form.enddate.data,form.Country.data)
        return redirect('/index')
    return render_template('input.html', title='Enter a Brand', form=form)
    #return ("should return index page")




if __name__ == '__main__':
    app.run(debug=True)

, но когда я запускаю свой скрипт на python, с интерфейсом ничего не происходит, он как бы застрял, его следовало перенаправить на страницу индекса (ту, которая показывает, что запрос был успешно отправлен)

Ниже находится консоль (Anaconda Prompt o / p)

(base) C:\Users\aadhikarla\Insight Auomation\app>python standard_routes.py
 * Serving Flask app "standard_routes" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 908-258-463
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [26/Jun/2019 12:47:14] "GET /input HTTP/1.1" 200 -

Она не продвигается вперед от запроса GET, я изменил длинную программу на несколько операторов print для тестирования сельдерея,но это не происходит вообще.

Также я понимаю, что при использовании Celery, даже если пользователь закрывает браузер, задание будет сохраняться и не сохраняться.p, пожалуйста, дайте мне знать, если мой вывод также верен

...