TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5042 759
Как дождаться обработки очереди asyncio

Пустая очередь ещё не означает, что работа закончена: потребитель мог забрать элемент и продолжать его обработку. asyncio.Queue.join() ориентируется на число неподтверждённых задач, а не на количество элементов внутри очереди.

В схеме producer/consumer каждому успешному get() соответствует один task_done(). Подтверждение ставят после обработки, обычно в finally. Если подтверждать и неудачные задачи, join означает завершение учёта, а успех и повторную обработку нужно отслеживать отдельно.

maxsize ограничивает накопление: await put() ждёт, пока появится место. Для остановки потребителя можно отправить отдельный маркер, который тоже требует task_done(). Сам join работников не останавливает — после него нужно дождаться завершения их задач.

#python #asyncio
More from @zen_of_python
  1. Oct 9, 2026Как добавить MCP-сервер в Django-проект django-mcpz позволяет зарегистрировать Python-функ…
  2. Oct 9, 2026Почему frozendict не замораживает вложенные объекты В Python 3.15 появляется встроенный fr…
  3. Oct 8, 2026Почему цикл внутри теста скрывает часть ошибок Тест перебирает десять входов и проверяет р…
  4. Oct 8, 2026Как выполнять CPU-задачи в отдельных интерпретаторах Python В Python 3.14 InterpreterPoolE…
  5. Oct 8, 2026Как отличить отсутствие аргумента от None в Python Если None — допустимое значение настрой…
  6. Oct 7, 2026security.txt в Django: контакт для сообщений об уязвимостях Исследователь нашёл уязвимость…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →