Python 通过 aiodocker 运行 时未显示日志
Python logs not showing when run via aiodocker
我正在关注 aiodocker example,将 echo "hello world"
替换为 python -c 'print("hello world")'
,但未显示日志。
以下解决方案(使用 PYTHONUNBUFFERED=1
、flush=True
、-u
标志)没有帮助:
Python 当 运行 在 docker 中分离时,应用程序不打印任何内容
Why doesn't my docker actually log anything?
import asyncio
import aiodocker
async def run_container():
docker = aiodocker.Docker()
container = await docker.containers.create_or_replace(
config={
'Cmd': ['python', '-c', 'print("hello world")'],
'Image': 'python:3.8.2-buster',
},
name="testing"
)
await container.start()
logs = await container.log(stdout=True, stderr=True)
print(''.join(logs))
await container.delete(force=True)
await docker.close()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(run_container())
loop.close()
还有什么问题?
请等待启动的容器完成后再获取日志:
await container.start()
await container.wait()
另一个选项是使用 follow=True
参数来获取日志:
async for chunk in container.log(stdout=True, stderr=True, follow=True):
print(chunk)
可以应用于运行容器实例。
我正在关注 aiodocker example,将 echo "hello world"
替换为 python -c 'print("hello world")'
,但未显示日志。
以下解决方案(使用 PYTHONUNBUFFERED=1
、flush=True
、-u
标志)没有帮助:
Python 当 运行 在 docker 中分离时,应用程序不打印任何内容
Why doesn't my docker actually log anything?
import asyncio
import aiodocker
async def run_container():
docker = aiodocker.Docker()
container = await docker.containers.create_or_replace(
config={
'Cmd': ['python', '-c', 'print("hello world")'],
'Image': 'python:3.8.2-buster',
},
name="testing"
)
await container.start()
logs = await container.log(stdout=True, stderr=True)
print(''.join(logs))
await container.delete(force=True)
await docker.close()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(run_container())
loop.close()
还有什么问题?
请等待启动的容器完成后再获取日志:
await container.start()
await container.wait()
另一个选项是使用 follow=True
参数来获取日志:
async for chunk in container.log(stdout=True, stderr=True, follow=True):
print(chunk)
可以应用于运行容器实例。