aiodocker
aiodocker copied to clipboard
websocket doesn't filter by streams
Long story short
websocket
doesn't filter by stream as args would suggest.
https://github.com/aio-libs/aiodocker/blob/f1dbdc3d42147f4c2ab5e6802acf6f7d0f885be4/aiodocker/containers.py#L239
async def websocket(self, **params):
if not params:
params = {"stdin": True, "stdout": True, "stderr": True, "stream": True}
...
- Expected behaviour:
ws_out = await proc.websocket(stdin=False, stdout=True, stderr=False, stream=True)
ws_err = await proc.websocket(stdin=False, stdout=False, stderr=True, stream=True)
# proc prints "foobar" to stdout
msg = await ws_out.receive() # msg.data == b"foobar"
msg = await ws_err.receive() # msg.data != b"foobar"
- Actual behaviour:
msg = await ws_err.receive() # msg.data == b"foobar"
How to reproduce
Get/Build a docker image that prints anything to stdout. Then
docker = aiodocker.Docker()
proc = await docker.containers.create_or_replace(name, config)
ws_out = await proc.websocket(stdin=False, stdout=True, stderr=False, stream=True)
ws_err = await proc.websocket(stdin=False, stdout=False, stderr=True, stream=True)
await proc.start()
print(await ws_err.receive())
Your environment
Linux