问题
码头形象大小一般应尽可能小。使用像标准蟒蛇映像这样的完整环境,通常会在严重臃肿的映像中安装所有依赖项。将python打包到独立的可执行文件(例如使用pyinstaller)是减少图像大小和整体复杂性的完美方法。
Environment:python3.6,pyinstaller==3.4
问题是,python使用每个默认缓冲的stdio。这可以通过使用python -u ...运行python脚本来缓解。但在使用pyinstaller时变得不可访问。
根据文档,应该可以在生成的可执行文件中添加运行时选项,如u、v和W ...。但不幸的是,在现实中,它似乎不起作用。v和W都正常工作,但是u似乎完全被忽略了。
下面的代码片段显示了使用情况:
...
exe = EXE(...
[('u', None, 'OPTION')],
name="myapp",
...)
...这个旗子还有效吗?由于其他的工作-它是否被删除而没有通知或更新的文档?
在不修改python代码(如所以 )的情况下,是否有其他方法来禁用stdio的缓冲(使用pyinstaller或外部的)?
为什么要这么做?
在运行码头群服务时,要避免缓冲IO。为了使可执行文件正确地实时登录到docker守护进程,有必要附加一个shell。但是,将tty外壳附加到群集任务使日志的处理变得更加复杂,甚至不可能。
发布于 2021-11-01 08:51:30
https://stackoverflow.com/questions/52302361
复制相似问题