Я новичок во 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, пожалуйста, дайте мне знать, если мой вывод также верен