我需要重定向发布请求的另一个方向。但是只返回200个响应。 但是我不知道该怎么办
我已经尝试过类似的方法,但是没有效果。 bar()函数中的print(“ Redirected!”)无效。
from threading import Thread
from flask import Flask, redirect, Response, url_for
@app.route('/foo', methods=['POST'])
def foo():
t = Thread(
target=redirect,
args = (url_for('bar'), 307)
)
t.start()
t.join()
return Response(status=200)
@app.route('/bar', methods=['POST'])
def bar():
print("Redirected!")
return "Redirected!"
答案 0 :(得分:0)
我决定重新发送请求,并附带所有内容
import requests
def redirect_thread(**kwargs):
request_funcs = {
'GET': requests.get,
'POST': requests.post,
'DELETE': requests.delete,
'PUT': requests.put
}
try:
request_funcs[request.method](
url=url,
headers=request.headers,
json=request.json,
files=request.files,
params=request.args,
**kwargs
)
except KeyError:
return jsonify({
'error': True,
'message': 'Method Not Allowed'
})
@app.route('/foo', methods=['POST'])
def foo():
t = Thread(
target=redirect_thread(params=request.args),
)
t.start()
t.join()
return Response(status=200)
答案 1 :(得分:0)
看看您的代码,我有点不确定为什么您要在另一个线程中手动运行重定向,将所述线程加入并返回结果。您应该只在原始请求上调用'redirect()'并传递上下文,然后上下文将重定向到'/ bar'端点,并且您的网络服务器将处理线程。