gpt4 book ai didi

python - Flask 多处理在进程完成之前不会返回响应

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:04 25 4
gpt4 key购买 nike

我有一个带有代码块的 flask 应用程序:

if flag1 and flag2 and flag3:

logger.info("Creating new process")
p = Process(
target=some_function,
args=(
param1,
param2,
param3,
param4,
param5
),
daemon=False
)
p.start()
logger.info("Return Now")
return "OK", 200

现在,some_function 需要一段时间才能完成,我想在客户端继续工作的同时将响应返回给客户端。

我已经到了它记录“立即返回”的地步,但它似乎还没有返回。看起来它在发送响应之前正在等待该过程完成。

我不是 Linux 或 Python 和 Flask 方面的专家,但当我使用正常的 Flask run 或 python -m app 命令在 Windows 机器中测试它时,它可以工作。

作为附加信息,我使用 uwsgi 将其部署在 Linux 服务器中,并使用以下命令执行:

uwsgi --socket 127.0.0.1:9003 -w wsgi:app

为什么会这样?

提前致谢。

编辑:我也尝试将守护进程设置为 True,但结果仍然相同。 Python版本为3.6

编辑:应用程序的进程由supervisord处理,由uwsgi执行,并且位于通过uwsgi_pass传递的nginx后面(如果有帮助的话)。

编辑:我想补充一点,我认为这可能是 Nginx 的问题。正如评论中指出的,这不太可能是 Flask 应用程序。现在最上面的是Nginx。

我想要解决的真正问题是:我正在向 AWS API Gateway 发送请求,该网关会触发 Lambda 函数,然后该函数向 Nginx 后面的 Linux 服务器中的 API 发出请求。 Flask 应用程序工作正常,除了当它生成进程时,控件似乎没有返回。当我在 Lambda、Postman 或 python 脚本中调用 API 时,会发生这种情况。

最佳答案

我认为您想要做的是分离您正在创建的流程 - 在这种情况下,我建议尝试此答案中的双叉方法。

https://stackoverflow.com/a/49123627/6410635

关于python - Flask 多处理在进程完成之前不会返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com