Python日志记录行为(kubernetes)

2024-05-16 18:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我制作了一个非常简单的基于烧瓶的应用程序,并将其托管在kubernetes吊舱中

当我在Rancher中打开日志时,我可以看到以下警告:

 * Serving Flask app "app/preapproved_limits/api.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

我在本地机器上启动烧瓶时也会看到

但我在本地机器上看不到,在Rancher上也确实看到:

10.0.67.20 - - [02/Jul/2020 16:49:20] "GET /health HTTP/1.1" 200 -
INFO:werkzeug:10.0.67.20 - - [02/Jul/2020 16:49:20] "GET /health HTTP/1.1" 200 -

每5秒记录一次。 怎么回事

但是最重要和恼人的是,我看不到我用Python的print()函数生成的日志

谁能解释一下:

  • 为什么我在Rancher和本地都看到了一些东西(最初的烧瓶警告),但是
  • 为什么我只在Rancher(日志)中看到一些东西
  • 为什么我只能在我的机器上看到一些东西,而不能在Rancher中看到

Tags: 机器app应用程序http警告getserver烧瓶
1条回答
网友
1楼 · 发布于 2024-05-16 18:41:12

/health是k8s需要的正常healthcheck端点

默认情况下,Flask不会打印到标准输出,因为它会缓冲行以提高I/O效率。您可以调用sys.stdout.flush()print(flush=True)、在Dockerfile中设置env varPYTHONUNBUFFERED=1(可能是最简单的),或者像我们应该做的那样使用logging模块

您可以阅读有关此环境变量here的更多信息

相关问题 更多 >