相关疑难解决方法(0)

禁用输出缓冲

Python的解释器默认启用输出缓冲sys.stdout吗?

如果答案是肯定的,那么禁用它的所有方法是什么?

建议到目前为止:

  1. 使用-u命令行开关
  2. 包装sys.stdout在每次写入后刷新的对象
  3. 设置PYTHONUNBUFFEREDenv var
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?

python stdout buffered

487
推荐指数
10
解决办法
25万
查看次数

在 docker 中激活 conda 环境

我需要在 docker 中激活环境并在此环境中运行命令。我创建了环境,但随后我尝试激活此环境并以这种方式运行命令:

CMD [ "source activate mro_env && ipython kernel install --user --name=mro_env" ]
Run Code Online (Sandbox Code Playgroud)

但是当我运行 docker 时出现错误:

[FATAL tini (8)] exec source activate mro_env && ipython kernel install 
--user --name=mro_env failed: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这是整个 Dockerfile:

FROM continuumio/miniconda3

ADD /src/mro_env.yml /src/mro_env.yml
RUN conda env create -f /src/mro_env.yml

# Pull the environment name out of the mro_env.yml
RUN echo "source activate $(head -1 /src/mro_env.yml | cut -d' ' -f2)" > ~/.bashrc
ENV PATH /opt/conda/envs/$(head -1 /src/mro_env.yml | cut …
Run Code Online (Sandbox Code Playgroud)

python docker anaconda conda

29
推荐指数
6
解决办法
3万
查看次数

捕获python脚本的输出在docker容器内运行

这里的目的是使用docker容器作为安全沙箱来运行不受信任的python脚本,但是使用docker-py模块在python中执行此操作,并且能够捕获该脚本的输出.

我在docker容器中运行python脚本foo.py(它ENTRYPOINT在我的Dockerfile中设置为命令,所以它在容器运行后立即执行)并且无法捕获该脚本的输出.当我使用普通CLI运行容器时

docker run -v /host_dirpath:/cont_dirpath my_image
Run Code Online (Sandbox Code Playgroud)

(host_dirpath是包含foo.py的目录)我得到foo.py的预期输出打印到stdout,这只是一个键值对的字典.但是,我正在尝试使用docker-py模块在python中执行此操作,并且不知何故该logs方法未捕获脚本输出.这是我正在使用的python代码:

from docker import Client

docker = Client(base_url='unix://var/run/docker.sock',
              version='1.10',
              timeout=10)

contid = docker.create_container('my_image', volumes={"/cont_dirpath":""})
docker.start(contid, binds={"/host_dirpath": {"bind": "/cont_dirpath"} })

print "Docker logs: " + str(docker.logs(contid))
Run Code Online (Sandbox Code Playgroud)

这只会导致"Docker日志:" - 日志中没有捕获任何内容,stdout和stderr都没有(我尝试在foo.py中引发异常来测试它).

我之后的结果是由foo.py计算的,目前只是用python print语句打印到stdout .如何将它包含在docker容器日志中,以便我可以在python中读取它?或者从容器外部以其他方式捕获此输出?

任何帮助将不胜感激.提前致谢!

编辑:

使用docker-py仍然没有运气,但是当使用subprocess.Popen使用普通CLI运行容器时它运行良好 - 执行此操作时,输出确实被stdout正确抓取.

python linux docker dockerpy

23
推荐指数
1
解决办法
1万
查看次数

如何显示在Docker容器中运行的Python应用程序的输出?

所以,我在Docker容器中运行了一些Python代码.我使用Google的gcloud脚本启动了我的本地环境.我看到了基本的访问方式日志和健康检查信息,但我不知道如何通过我从Python应用程序写入控制台的日志消息.是否有一个参数我可以设置为使用我的gcloud脚本完成此操作,或者我可以在Dockerfile中设置哪些可以帮助的参数?

docker gcloud boot2docker dockerfile

13
推荐指数
1
解决办法
6200
查看次数

如何查看docker容器的日志

我有一个简单的代码,我已经创建了一个docker容器,状态显示它运行正常.在代码中我使用了一些print()命令来打印数据.我想看看打印命令输出.

为此,我看到了docker日志.但它似乎没有工作,因为它没有显示日志.如何查看日志.?

 $ sudo docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                            NAMES
a3b3fd261b94        myfirstdocker                     "python3 ./my_script…"   22 minutes ago      Up 22 minutes                                                        elegant_darwin

 $ sudo docker logs a3b3fd261b94
 <shows nothing>
Run Code Online (Sandbox Code Playgroud)

logging docker

12
推荐指数
1
解决办法
8074
查看次数

登录Kubernetes Pod没有显示

我让Kubernetes在pod中设置并运行grpc服务.我成功地在服务端点击了一个端点,其中有一个print()语句,但我在日志文件中看不到任何日志.我之前在Kubernetes中运行(cron)作业时看到过这种情况,日志只在作业完成后出现(而不是在作业运行时).有没有办法让kubernetes立即写入日志文件?我可以放置的任何设置(群集级别还是仅用于pod)?在此先感谢您的帮助!

logging kubernetes

8
推荐指数
2
解决办法
4800
查看次数

为什么我看不到任何 docker 日志?

我有一个简单的脚本,每 2 秒打印一次 hello。

# entry.py

import time

while True:
    print("hello")
    time.sleep(2)

Run Code Online (Sandbox Code Playgroud)

我有一个运行此脚本的超简单 docker 文件。


FROM python:3.9

COPY entry.py entry.py

CMD python entry.py

Run Code Online (Sandbox Code Playgroud)

首先我构建docker镜像:


FROM python:3.9

COPY entry.py entry.py

CMD python entry.py

Run Code Online (Sandbox Code Playgroud)

现在我用这个-it选项运行它,它按预期工作。

$ docker build -t dtest .
Run Code Online (Sandbox Code Playgroud)

但是当我在分离模式下运行它,然后尝试查看日志时,我什么也看不到。

$ docker run -it dtest
# hello printed to screen every two seconds
Run Code Online (Sandbox Code Playgroud)

python logging docker docker-logs

3
推荐指数
1
解决办法
41
查看次数

docker log 不显示 python 打印输出

我有一个在 Docker 容器中运行的 Django Proj

我的 Debug=True

但是 docker up logging 没有显示任何print('xxxx')输出。

有办法解决吗?谢谢!

python django docker

1
推荐指数
1
解决办法
424
查看次数