gpt4 book ai didi

python - 使用 Popen 捕获 django runserver 的标准输出

转载 作者:行者123 更新时间:2023-11-30 23:19:10 25 4
gpt4 key购买 nike

我正在尝试在单独的进程中运行“runserver”(和 testserver),并在服务器仍在运行时读取主程序中的输出(我想做一些自动 e2e 测试)。我无法将写入标准输出存储到文件中。我正在使用 python 3.4 和 django 1.7

from subprocess import Popen
from time import sleep
out = open('/tmp/o', 'w')
p = Popen(['./manage.py', 'runserver'] , stdout = out)
sleep(5)
out.flush()
p.terminate()
p.wait()
out.close()
print(open('/tmp/o').read())
# stdout file is empty

# Making sure the same command with stdout=None prints something
Popen(['./manage.py', 'runserver'] )
# prints output as expected
sleep(5)
p.terminate()
p.wait()

我显然做错了什么,但我在文档或任何其他 stackoverflow 问题中找不到任何帮助。

谢谢

米尔科

最佳答案

我在这里找到了答案: https://code.djangoproject.com/ticket/19593#comment:4

设置环境变量 PYTHONUNBUFFERED 修复了问题

env = dict(os.environ, **{'PYTHONUNBUFFERED':'1'})

out = open('/tmp/o', 'w')
p = Popen(['./manage.py', 'runserver', '-v', '3'] , stdout = out, env = env)

关于python - 使用 Popen 捕获 django runserver 的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207033/

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