На главную
00:00
Коллега
в сети

Пузырь сообщения теперь подстраивается под текст: короткая реплика остаётся узкой, длинная растягивается по ширине и высоте. Фиксированная высота длинного сообщения убрана. Размер берётся из содержимого, поэтому правка в index.html или в DevTools сразу меняет пузырь. Перенос строки в тексте сообщения тоже сохраняется.

Вернулся к макету чата для телефона. Обновил элементы шестерёнки и композера. Меню телефона 2 остаётся открытым. Клик по e55 откроет меню телефона 3. Два открытых меню допустимы — план не требует закрывать их глобально.

Там и типы, и ретраи.

Жду фрагмент

Вот с начала файла.

if __name__ == "__main__":
    asyncio.run(main())

Что здесь интересного:

КомпонентОписание
Generic[T]Типизация для работы с любыми типами соединений
Rate limitingОграничение количества запросов в секунду
Retry logicЭкспоненциальная задержка при повторных попытках
Async contextПолная асинхронность с asyncio.Lock
MetricsСбор статистики работы пула
Graceful shutdownКорректное закрытие всех соединений

Нужен код на другом языке или с другими фичами?

напиши одну строку из него

class ConnectionState(Enum):
    IDLE = "idle"
    ACTIVE = "active"
    CLOSING = "closing"
    DEAD = "dead"

Это одна из строк из кода — определение перечисления состояний соединения.

Понял, спасибо

Выбрано 0
Персонализация
этот чат
Возможности
Команды меню
Быстрые команды
Промпт чата

Здесь можно ввести короткий промпт для этого чата: тон и стиль общения. Пример: «Отвечай коротко и по делу».

00:00
Коллега
в сети

Ретраи зависают.

На какой попытке?

После третьей тишина.

Скинь кусок

Сейчас, он короткий.

for attempt in range(3):
    await retry(attempt)

Вот это место.

Макет лежит в index.html: три независимых телефона в ряд на тёмном фоне, как в референсе. В каждом чате 11 сообщений. При открытии лента стоит на 6-м: выше него 5 сообщений и ниже ещё 5, дальше скролл не идёт. Среди них есть короткие реплики и одно сообщение высотой во всю ленту. Клик по сообщению открывает меню с реакциями и командами этого телефона: Ответить, Закрепить, Копировать, Выбрать, Переслать, Удалить. Шестерёнка открывает настройки только этого чата, назад возвращает в переписку. Слоты пока только показаны, без редактирования. Новый экран добавляется копированием блока "< article class="phone" >:" свои сообщения и свой список слотов. Четвёртый сам перейдёт на следующий ряд.

Подними таймаут

Поставлю 30 секунд.

И покрой тестом

Сделаю к вечеру.

Выбрано 0
Персонализация
этот чат
Возможности
Команды меню
Быстрые команды
Промпт чата

Здесь можно ввести короткий промпт для этого чата: тон и стиль общения. Пример: «Объясняй термины простыми словами».

00:00
Коллега
в сети

Нужен ответ про лимиты.

Сколько в секунду?

Пока десять.

Мало для пула

Можно поднять позже.

Держим 10, остальное в очередь.

Лимит считается на весь пул, не на одно соединение. Лишние вызовы не отбрасываются: они ждут свободный слот.

Если очередь длиннее двадцати, новый запрос сразу получает отказ. Метрика пишет и отказ, и ожидание.

При остановке сервиса очередь сливается, открытые соединения закрываются по одному.

Добавить пример?

Да, одну строку

await client.acquire()

Норм

Выбрано 0
Персонализация
этот чат
Возможности
Команды меню
Быстрые команды
Промпт чата

Здесь можно ввести короткий промпт для этого чата: тон и стиль общения. Пример: «Ревизии и проверки финансово-хозяйственной деятельности».