【问题标题】:Redirect flask request in thread在线程中重定向烧瓶请求
【发布时间】:2019-08-12 18:20:16
【问题描述】:

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

【问题讨论】:

    标签: python multithreading redirect flask


    【解决方案1】:

    我决定用它附带的所有东西重新发送请求

    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)
    

    【讨论】:

      【解决方案2】:

      查看您的代码,我有点不确定您为什么要在另一个线程中手动运行重定向,加入所述线程并返回结果。您应该只对原始请求调用“redirect()”并传递上下文,然后将重定向到“/bar”端点,您的网络服务器将处理线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        • 2012-12-10
        • 2013-06-21
        • 1970-01-01
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多