Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(dispatcher): mark tasks as done after taking elements off queue #1305

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

d-Rickyy-b
Copy link

This PR fixes an issue where the updates_queue.join() method would never return. When waiting for the updates_queue to get emptied, the asyncio queue implementation relies on an internal counter. This counter is incremented on each put() but is not automatically decremented on each get(). In order to decrement the counter we need to use updates_queue.task_done(), as per the docs. Since this wasn't done in pyrogram yet, there was no proper way to use the join() method on the updates_queue and hence wait until all updates got processed.

A workaround would be to use a while loop and check if updates_queue.empty() returns true. But using join() is just a lot cleaner and does not require a loop on our end.

…_queue

This commit fixes an issue where the `updates_queue.join()` method would never return.
When waiting for the `updates_queue` to get emptied, the asyncio queue implementation relies on an internal counter. This counter is incremented on each `put()` but is not automatically decremented on each `get()`.
In order to decrement the counter we need to use `updates_queue.task_done()`, as per the [docs](https://docs.python.org/3/library/asyncio-queue.html#asyncio.Queue.task_done). Since this wasn't done in pyrogram yet, there was no proper way to use the `join()` method on the updates_queue and hence wait until all updates got processed.

A workaround would be to use a while loop and check if `updates_queue.empty()` returns true. But using `join()` is just a lot cleaner and does not require a loop on our end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant