我有一个简单的应用程序,需要在celery中运行subprocess.call,只需将一些文本返回到屏幕,因为它已成功提交。
尽我所能,我无法让重定向(url_for())做任何事情。我在日志中看到我在浏览器窗口中获得了302和200但没有新页面。
这是我的server.py代码的相关部分:
#!/usr/bin/python
import os
from flask import Flask, url_for, jsonify, request, make_response, render_template, json, flash, Markup, redirect
from celery import Celery, states
from flask_cors import CORS, cross_origin
import pandas as pd
import subprocess
app = Flask(__name__)
CORS(app)
app.secret_key = 'random string'
app.config['CELERY_BROKER_URL'] = 'amqp://cluster:cluster@localhost/myvhost'
app.config['CELERY_RESULT_BACKEND'] = 'amqp://cluster:cluster@localhost/myvhost'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
@app.route('/')
def main():
return render_template('index.html')
@app.route('/showPrevNext')
def showPrevNext():
return render_template('prevnext.html')
@app.route('/PrevNext',methods=['GET','POST'])
def prevNext():
_uid = request.form['inputUid']
_db = request.form['inputName']
_TableName = request.form['inputTableName']
if _id:
uid = _uid
if _db:
db = _db
if _TableName:
TableName = _TableName
flash("Running images!")
return redirect(url_for('main'))
create_some_stuff.delay(uid,db,TableName)
create_some_stuff是一个运行良好的芹菜任务,但是我在重定向工作时遇到了麻烦。经过几个小时的玩弄,我希望你们中的一个可以帮忙吗?
控制台的输出是:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 270-380-963
192.168.200.238 - - [15/Feb/2018 16:55:07] "POST /PrevNext HTTP/1.1" 302 -
192.168.200.238 - - [15/Feb/2018 16:55:08] "GET / HTTP/1.1" 200 -
我错过了一些简单的东西吗?
由于
答案 0 :(得分:0)
我在重定向工作时遇到了麻烦。
prevNext 中的条件表达式可能不会导致函数返回。尝试将 return 移至第一级,看看会发生什么。像这样:
@app.route('/PrevNext',methods=['GET','POST'])
def prevNext():
_uid = request.form['inputUid']
_db = request.form['inputName']
_TableName = request.form['inputTableName']
if _id:
uid = _uid
if _db:
db = _db
if _TableName:
TableName = _TableName
flash("Running images!")
create_some_stuff.delay(uid,db,TableName)
return redirect(url_for('main')) #moved