gpt4 book ai didi

python - 如何刷新 PCF 上托管的 python CGI 文件中的 STDOUT?

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

由于 Apache 网关超时,并且希望向最终用户显示更多信息,我希望能够刷新 PCF 上托管的 python CGI 脚本上的 STDOUT,本质上是提供脚本状态的更新。

我尝试在 python 中启用 -u 标记(#!/usr/python -u 在我的脚本开头)、sys.stdout.flush() 命令,甚至使用 subprocess.call 来执行 perl 脚本设置为刷新到打印一些进度文本的 STDOUT($| = 1; 在 perl 脚本的开头)。此外,我仔细检查了我没有使用任何需要缓冲的 Apache 模块(例如,没有 mod_deflate)。最后,我会提到执行标准 perl CGI 而不是 python CGI 允许 STDOUT 刷新,所以我认为它一定与我的 python/Apache/PCF 配置有关。

我刚刚没有想法,需要一些建议。

使用上述任何方法,我都认为 stdout 会刷新。但是,它们都不起作用!

预先感谢您提供的任何帮助。

最佳答案

您可以在 Python2 代码中使用类似的方法禁用缓冲:

    # set stdout as non-buffered
if hasattr(sys.stdout, 'fileno'):
fileno = sys.stdout.fileno()
tmp_fd = os.dup(fileno)
sys.stdout.close()
os.dup2(tmp_fd, fileno)
os.close(tmp_fd)
sys.stdout = os.fdopen(fileno, "w", 0)

这是重新打开没有缓冲区的sys.stdout(即0作为第三个参数)。执行此操作后,写入 sys.stdout 的任何内容都不应被缓冲。

关于python - 如何刷新 PCF 上托管的 python CGI 文件中的 STDOUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364993/

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