来自间隔过程的 Docker-Compose 日志已排队?

来自间隔过程的 Docker-Compose 日志已排队?

我有一个 Docker 容器设置,其中包含两个同时运行的 python 程序。

  • 进程 A 是 flask 支持的 Web 服务器,它从 SQLITE DB 中选择数据并将其放在静态页面上
  • 进程 B 是一个程序,它从网页检索数据、解析数据、处理数据(触发短信提醒)、缓存结果、将新结果存储在数据库中,并以几种不同的方式打印处理后的数据。进程 B 在 Python 程序本身中每 45 秒运行一次,使用如下 while 循环:
while True:
   # do_something
   sleep(45)

两个过程均运行正常。 打印没有错误,事实上我收到了实时警报,我可以验证数据库插入的时间戳是否在 45 秒间隔内。虽然“日志”似乎docker-compose up已排队。有时没有任何动静,然后突然生成了一个小时的打印语句?

docker 容器在 Raspberry Pi 3+(Ubuntu Server 20.04 LTS)上运行,使用时htop我可以看到该容器的 CPU 使用率仅为 0.1%,内存使用率约为 3.4%。

我的 Docker 版本是:Docker version 20.10.5, build 55c4c88


当我访问由进程 A 支持的网站时,它会立即记录这些日志,但我认为这是因为它正在访问网络。我没有在 Flask 中设置任何要打印的日志。

进程A和进程B属于同一个服务,通过docker docs中提供的运行多进程的脚本进行调用: https://docs.docker.com/config/containers/multi-service_container/

答案1

经过一番挖掘之后,这个问题已经被提出并回答了: https://stackoverflow.com/questions/51362213/docker-compose-not-printing-stdout-in-python-app

相关内容