aio-libs / aiodocker

Python Docker API client based on asyncio and aiohttp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

websocket doesn't filter by streams

lshamis opened this issue · comments

Long story short

websocket doesn't filter by stream as args would suggest.

async def websocket(self, **params):

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