Skip to content

asyncio client disconnected from reality #217

Open
@orbisvicis

Description

@orbisvicis

The connected property is rather meaningless. There's no rhyme or reason to its value. Test output, and test program:

# async sleep + submit command + fetch results
#   1691326137 : main: connected
#   1691326257 : main: slept (disconnected)
#   1691326257 : main: connected:  True
#   1691326257 : main: submitted status
#   1691326257 : main: connected:  True
#   1691326257 : main: awaiting command result succeeded
#   1691326257 : main: connected:  True
#   1691326257 : main: done
#
# time sleep + submit command + fetch results
#   1691326306 : main: connected
#   1691326426 : main: slept (disconnected)
#   1691326426 : main: connected:  True
#   1691326426 : main: submitted status
#   1691326426 : main: connected:  True
#   1691326426 : main: awaiting command result failed:  ConnectionError('Connection lost while reading line')
#   1691326426 : main: connected:  False
#   1691326426 : main: done
#
# submit command + async sleep + fetch results
#   1691326541 : main: connected
#   1691326541 : main: submitted status
#   1691326541 : main: connected:  True
#   1691326661 : main: slept (disconnected)
#   1691326661 : main: connected:  True
#   1691326661 : main: awaiting command result succeeded
#   1691326661 : main: connected:  True
#   1691326661 : main: done
#
# submit command + time sleep + fetch result
#   1691326721 : main: connected
#   1691326721 : main: submitted status
#   1691326721 : main: connected:  True
#   1691326841 : main: slept (disconnected)
#   1691326841 : main: connected:  True
#   1691326841 : main: awaiting command result succeeded
#   1691326841 : main: connected:  True
#   1691326841 : main: done

# time sleep + submit command + reconnect + fetch results + submit/fetch again
#   1691327990 : main: connected
#   1691328110 : main: slept (disconnected)
#   1691328110 : main: connected:  True
#   1691328110 : main: submitted status
#   1691328110 : main: connected:  True
#   1691328110 : main: re-connected
#   1691328110 : main: connected:  True
#   1691328110 : main: awaiting command result failed:  ConnectionError('Connection lost while reading line')
#   1691328110 : main: connected:  True
#   1691328110 : main: submitted status
#   1691328110 : main: awaiting command result succeeded
#   1691328110 : main: done
#
# time sleep + submit command + reconnect + time sleep + fetch results + submit/fetch again
#   1691328676 : main: connected
#   1691328796 : main: slept (disconnected)
#   1691328796 : main: connected:  True
#   1691328796 : main: submitted status
#   1691328796 : main: connected:  True
#   1691328796 : main: re-connected
#   1691328796 : main: connected:  True
#   1691328916 : main: slept (disconnected)
#   1691328916 : main: connected:  True
#   1691328916 : main: awaiting command result failed:  ConnectionError('Connection lost while reading line')
#   1691328916 : main: connected:  True
#   1691328916 : main: submitted status
#   1691328916 : main: connected:  True
#   1691328916 : main: awaiting command result failed:  ConnectionError('Connection lost while reading line')
#   1691328916 : main: connected:  False
#   1691328916 : main: done
import time
import pprint
import asyncio
import mpd.asyncio


def gt():
    return str(int(time.time())) + " :"

async def main():
    client = mpd.asyncio.MPDClient()
    await client.connect("localhost", 6600)
    print(gt(), "main: connected")

    #await asyncio.sleep(120)
    time.sleep(120)
    print(gt(), "main: slept (disconnected)")

    c = client.connected
    print(gt(), "main: connected: ", c)

    f = client.status()
    print(gt(), "main: submitted status")

    c = client.connected
    print(gt(), "main: connected: ", c)

    await client.connect("localhost", 6600)
    print(gt(), "main: re-connected")

    c = client.connected
    print(gt(), "main: connected: ", c)

    time.sleep(120)
    print(gt(), "main: slept (disconnected)")

    c = client.connected
    print(gt(), "main: connected: ", c)

    try:
        await f
    except Exception as e:
        print(gt(), "main: awaiting command result failed: ", repr(e))
    else:
        print(gt(), "main: awaiting command result succeeded")

    c = client.connected
    print(gt(), "main: connected: ", c)

    f = client.status()
    print(gt(), "main: submitted status")

    c = client.connected
    print(gt(), "main: connected: ", c)

    try:
        await f
    except Exception as e:
        print(gt(), "main: awaiting command result failed: ", repr(e))
    else:
        print(gt(), "main: awaiting command result succeeded")

    c = client.connected
    print(gt(), "main: connected: ", c)

    print(gt(), "main: done")


asyncio.run(main())

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions