Open
Description
Long story short
Streaming logs for a container works fine for exactly 5 minutes before the process times out. This seems to be an HTTP timeout, probably a default value in aiohttp.
- Expected behaviour: Stream logs until container goes away.
- Actual behaviour: Only streams for 5 minutes even though the container is still running.
How to reproduce
docker = Docker()
container = await docker.containers.get(container_id)
logs_stream = container.log(stdout=True, stderr=True, follow=True)
async for log in logs_stream:
print(log)
Let it cook for 5 minutes.
Sidenote:
Subscribing to docker events works fine.
I also went sourcediving and found the logs
property on the DockerContainer
class which is a DockerLog
instance.
I then tried to do the same as with docker events:
subscription = container.logs.subscribe()
asyncio.create_task(container.logs.run(timestamps=True))
while True:
log = await subscription.get()
if log is None:
break
print(log)
But this also times out after 5 minutes.
Your environment
Python 3.12.6 (inside Docker container from python:3.12-alpine3.19
)
aiodocker==0.23.0
aiohttp==3.9.5 (clamped because of an issue with newer versions)
Metadata
Metadata
Assignees
Labels
No labels