在线程中重定向烧瓶请求

时间:2019-08-12 18:20:16

标签: python multithreading redirect flask

我需要重定向发布请求的另一个方向。但是只返回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!"

2 个答案:

答案 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'端点,并且您的网络服务器将处理线程。