我有一个简单的脚本,每2秒打印一次hello。
# entry.py
import time
while True:
print("hello")
time.sleep(2)
我有一个超简单的docker文件运行这个脚本。
FROM python:3.9
COPY entry.py entry.py
CMD python entry.py
首先我建立docker映像:
$ docker build -t dtest .
现在,我使用-it
选项运行它,它按预期工作。
$ docker run -it dtest
# hello printed to screen every two seconds
但是当我以分离模式运行它,然后尝试查看日志时,我什么也看不到。
$ docker run -d dtest
e19f7285c098af582e163354be84774d1307b2409337cb03bdd217292899bdb7
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e19f7285c098 dtest "/bin/sh -c 'python …" 20 seconds ago Up 18 seconds epic_chatterjee
$ docker logs epic_chatterjee
# nothing is shown, exits
$ docker logs -f epic_chatterjee
# a cursor keeps blinking but nothing shown
这与Python缓冲输出的方式有关。由于写入stdout的计算代价很高,因此它会尝试收集大的缓冲区,只有在没有连接终端的情况下才会偶尔刷新它们。
您可以将您的Python代码更改为:
print("Hello", flush=True)
或者使用强制无缓冲输出的-u
标志运行python
FROM python:3.9
COPY entry.py entry.py
ENTRYPOINT ["python", "-u"]
CMD ["entry.py"]
我是一个很新的编码,我一直有问题的物理计算器,我一直在做。我做这件事是为了在类项目中使用OOP。我的要点是让用户输入变量,然后它们被运到类文件上的等式中,然后最后显示结果。当我尝试编译时,它说函数getAnswer看不到它上面声明的结果。我计划对这个方程进行16次迭代,所以我首先要弄清楚为什么这一次不起作用。欢迎任何回答。 -谢谢 这是类文件
本页和本答案都引用了IP地址172.22.0.3。通过RFC 1918,它在专用网络范围172.16.0.0-172.31.255.255内。它也在我自己的代码中(在docker中运行),但我忘记了为什么。 是Docker默认吗?你能找到推荐人吗?
我使用Log4J来记录应用程序运行时进程。这是我的log4j。属性文件: 我已经在Tomcat上部署了应用程序,并调用了一些它的方法来获取日志消息。在这些操作之后,在${CATALINA_HOME}/logs文件夹中,我得到了一些. log文件: 卡塔琳娜。2017-02-12.日志(没有我的应用信息) 在我的应用程序中,我得到的记录器为: 我还尝试用INFO和ERROR级别记录消息。 结果,我得
我已经使用开发人员沙盒帐户构建了一个集成。我最近将我的应用程序升级为live,并将我的生产环境配置为使用新的集成id和secret以及live Docusign url。 但是,当我尝试在应用程序的帐户中创建oauth连接时,我的服务器会获取一个代码,将客户端重定向到Docusign以进行身份验证,但Docusign登录屏幕显示错误“没有向Docusign注册的重定向URI”。事实并非如此-我的开
使用指南 - 疑难问题 - 数据缺失或无数据问题 - 为什么看不到热力图 设置热力图的页面上边没有正确添加当前站点的统计代码 网站有跳转,但是热力图上边设置的监控网址是跳转之前的,请用跳转之后的网址设置; 注意查看时间,热力图是隔一天后才有数据的; 偶尔浏览器的显示存在问题,请将页面设置为100%大小,并作刷新处理,且建议使用Chrome和Firefox浏览器。 页面上添加了禁止iframe加载的
我正在尝试使用argparse模块使我的Python程序接受灵活的命令行参数。我想传递一个简单的布尔标志,并说或来执行代码中的相应分支。 请考虑以下内容。 这是为什么?!!intflag似乎解析正确,但布尔标志总是解析为,即使我在命令行参数中明确提到我希望它是。 我哪里错了?