【问题标题】:Unstable stdout with docker python使用 docker python 不稳定的标准输出
【发布时间】:2019-06-08 20:30:34
【问题描述】:

我有下一个 Dockerfile:

FROM ubuntu:16.04
ENV PYTHONIOENCODING=UTF-8
ENV PYTHONUNBUFFERED=1
ADD . /src
WORKDIR /src
ENTRYPOINT ["python3"]
CMD ["-u", "bot.py"]

此 dockerfile 与 docker-compose 一起使用:

version: '3'
services:
  something:
    build: .
    networks:
      - proxy
    volumes:
  - E:\tmp:/src/tmp
ports:
  - "6881-6889:6881-6889/udp"
  - "6881-6889:6881-6889/tcp"
  - "6891:6891/udp"
  - "6891:6891/tcp"
  - "6771:6771/udp"
  - "6771:6771/tcp"
  - "4433-4434:4433-4434/udp"
  - "4433-4434:4433-4434/tcp"
  tor:
    image: "dperson/torproxy"
    networks:
      - proxy
networks:
  proxy:
    driver: bridge

我在 Windows 10 上使用 docker "Version 2.0.0.0-win81 (29211) Channel: stable Build: 4271b9e" 运行它:"docker-compose up -d"

在这个 python 脚本中有很多日志记录到标准输出。此时我正在使用如下代码打印所有内容:"print("Exception: " + str(exp), flush=True)"

而且我几乎每次都无法获得使用“docker logs”打印的任何内容。有时我有部分输出(按正确的顺序)。主要是我什么都没有。为什么?

python 3.5.2

附: 抱歉,冲洗所有内容只是我的尝试,而不是规则。

【问题讨论】:

  • 可以看到bot.py的内容吗?根据您的描述,这似乎可能是一个并发问题。

标签: python docker logging stdout flush


【解决方案1】:

我找到了问题的根本原因。我有 2 个相同脚本的实例。

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 1970-01-01
    • 2012-08-06
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多