Python异常后只有stdout被刷新

8 浏览
0 Comments

Python异常后只有stdout被刷新

我有一个像这样的Python文件:

print("文件开始", flush=True)
import ...
print("有时会有一些打印语句")
app = FastAPI()
if __name__ == "__main__":
    print("开始")
    uvicorn.run(app, host="0.0.0.0", port=8080)

所有这些都是正常工作的,但是我在控制台看不到任何消息。我在docker中使用以下命令运行:

/opt/conda/bin/python /opt/conda/bin/conda run -n my-env python -m folder.myfile

但是当我添加了像`int(input("这里不是整数"))`这样的错误时,我会得到异常和所有打印消息,包括必须在Python文件启动后刷新的第一个打印语句`print("文件开始", flush=True)`。

所以,如果在`print("文件开始", flush=True)`之后添加`int(input("这里不是整数"))`,我会得到`"文件开始"`和异常堆栈;当我将`int(input("这里不是整数"))`添加到文件末尾时,其他所有的`print`语句都正常工作。

为什么会发生这种情况,我该如何解决?

0