【问题标题】:How to return 202 Accepted in Flask?如何在 Flask 中返回 202 Accepted?
【发布时间】:2022-12-20 03:02:16
【问题描述】:

我曾尝试制作一个 Flask 应用程序。 我想制作一些这样的文件:

# ...
@app.route("/search") # Because Lynx can't play JavaScript
def search():
    # Return an 202 Accepted
    # Very long times searching...
    # Return result
# ...

那么如何让它返回 202 Accepted 但不从函数返回呢?

【问题讨论】:

  • 这是不可能的,并且使用通用 Web 标准并不真正支持,因为在返回 202 之后但在返回结果之前可能会出现错误。因此,状态代码应该与结果一起发送。

标签: python flask


【解决方案1】:
from threading import Thread

@app.route("/search"):
def search():
    def my_thread():
        # Search
        # Store the result somewhere so that a separate request
        # can be done to get result
    thread = Thread(target=my_thread)
    thread.start()
    return "Long request", 202

你可能想使用像 Celery 这样的东西,它是为执行异步任务而构建的

【讨论】:

    【解决方案2】:

    返回 202 Accepted 但不从函数返回

    这是不可能的,正如python docs所说

    return 将当前函数调用与表达式列表(或 None) 作为返回值。

    所以return确实终止了功能,这确实适用于整个python(不限于flask

    【讨论】:

    • 我认为这里不需要按字面意思理解“返回”。 OP询问他们是否可以发送 202 响应给客户…
    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多