为什么 Pod 中的 运行 一个 python 文件与直接 运行 它的行为不同?

Why does running a python file inside a pod not have the same behavior as running it directly?

我有一个包含以下代码的 FastAPI 应用程序

    @app.on_event("startup")
    async def startup_event():
    """Initialize application services"""
        print("Starting the service")

当我直接从终端 运行 FastAPI 时,我得到以下输出

INFO:     Started server process [259936]
INFO:     Waiting for application startup.
Starting the service
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3000 (Press CTRL+C to quit)

可以看到打印语句被执行了

但是,当同一个应用程序自动 运行 在 Kubernetes 集群中时,我得到以下输出

 INFO:     Waiting for application startup.
 INFO:     Application startup complete.
 INFO:     Uvicorn running on http://0.0.0.0:3000 (Press CTRL+C to quit)

打印语句没有被执行,事实上,函数内的任何附加代码都没有被执行。

但是,如果我这样退出进程:

@app.on_event("startup")
async def startup_event():
    """Initialize application services"""
    print("Starting the service")
    exit(99)

进程存在然后我可以看到打印语句。

SystemExit: 99
ERROR:    Application startup failed. Exiting.
Starting the service

这里有什么问题?

编辑:实际上没有任何代码被执行,我几乎在任何地方都放置了打印语句,但没有打印任何内容,但是网络服务器不知何故 运行s...

所以,实际上,我的代码、FastAPI、asyncio 或 Kubernetes 都没有问题。

实际上一切正常,只是输出被缓冲了。

在print语句中加上flush=True后,一切都显示出来了。

我正在回答这个问题,以防将来有可怜的人偶然发现这个帖子。

我花了好几天调试这个!!!