python-sdks icon indicating copy to clipboard operation
python-sdks copied to clipboard

Text/byte stream handling bug, documentation issues

Open onorabil opened this issue 10 months ago • 4 comments

Fix for RuntimeWarning: coroutine 'RoomManager.handle_text_stream' was never awaited This occurs when a message is received from a text (or byte) stream.

As shown in the documentation here, https://docs.livekit.io/home/client/data/text-streams/ a stream should register a handle like this:

room.register_text_stream_handler(
   "my-topic",
   handle_text_stream
)

But this results in the error above.

Furthmore, some documentation from the text-streams page above is wrong.

  1. handling streams > python > f' ID: {info.id}\n' should read f' ID: {info.stream_id}\n'
  2. handling streams > javascript > room.registerTextStreamHandler('my-topic', (reader, participantInfo) => { should read room.registerTextStreamHandler('my-topic', async (reader, participantInfo) => {

onorabil avatar Mar 01 '25 17:03 onorabil

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Mar 01 '25 17:03 CLAassistant

@onorabil thanks for the fix. we've got a couple of CI failures, do you mind taking a look?

davidzhao avatar Mar 01 '25 18:03 davidzhao

You're welcome! 1/2 failures fixed, the second one appears to be github actions related / branch not in livekit/python-sdks.

2025-03-01T23:26:57.8896834Z ##[group]Run actions/checkout@v3 2025-03-01T23:26:57.8897662Z with: 2025-03-01T23:26:57.8898053Z submodules: true 2025-03-01T23:26:57.8898473Z ref: patch-1 #this branch is not available in livekit/python-sdks 2025-03-01T23:26:57.8898908Z repository: livekit/python-sdks
... 2025-03-01T23:26:58.1860097Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +refs/heads/patch-1*:refs/remotes/origin/patch-1* +refs/tags/patch-1*:refs/tags/patch-1* #main issue 2025-03-01T23:26:58.4375152Z The process '/usr/bin/git' failed with exit code 1

onorabil avatar Mar 02 '25 00:03 onorabil

This was done on purpose, the responsibility for asynchronous management for the handler was supposed to live in user land, so having a synchronous callback and using asyncio task handling within the callback.

the docs need an update to reflect that.

curious to hear @theomonnom take on this

lukasIO avatar Mar 02 '25 11:03 lukasIO