GetStream / stream-python

Python Client - Build Activity Feeds & Streams with GetStream.io
https://getstream.io
BSD 3-Clause "New" or "Revised" License
142 stars 40 forks source link

Add a new way to query all users #148

Closed dbrezack closed 10 months ago

dbrezack commented 10 months ago

Problem explanation

Zendesk ticket: 43044 query_channels possible infinite loop by always returning results over 1000 eg Asking for offset: 1000000 will return users even when only 2000 users may exist in the system.

https://support.getstream.io/hc/en-us/articles/4414446580119-Querying-for-users-channels-past-the-offset-1000-limit-Chat

I would suggest that the library implement an easy way to query all users with offsets greater than 1000, maybe a python iterable.

Steps to reproduce

I'm well aware this code is not very clean but it does show the issue. Since query channels will always return items in the array you don't know when to stop.

    channels = []
    offset = 0
    limit = max_limit_to_fetch_channels
    channels_fetched_count = limit
    while channels_fetched_count > 0 or channels_fetched_count == limit:
        channels_fetched = query_channels(
            filter_conditions=......,
            sort={"last_message_at": -1},
            message_limit=1,
            channel_limit=limit,
            offset=offset,
        )
        channels.extend(channels_fetched)
        offset += limit
        channels_fetched_count = len(channels_fetched)

Environment info

Library version: stream-chat==4.8.0

JimmyPettersson85 commented 10 months ago

Hi @dbrezack this is the SDK repo for Activity Feeds, the chat SDK is here https://github.com/GetStream/stream-chat-python