Без Ollama приложение больше не выглядит зависшим

Проверка работы с недоступной Ollama показала: если машина с ней просто
выключена, пакеты уходят в никуда и каждый вызов честно ждёт свой таймаут.
Замер: запись одной вещи — 92 секунды, разбор фразы — 154, правка — 30.
Формально всё работало, но пользоваться этим невозможно.

Предохранитель в ollama.py:
- перед дорогим запросом быстрая проверка TCP-соединения (1.5 с вместо 120);
- после неудачи 30 секунд к серверу вообще не обращаемся;
- при успехе результат кешируется на 5 секунд, чтобы не проверять на каждом
  шаге;
- смена адреса в настройках и проба адреса сбрасывают паузу, иначе новый
  сервер полминуты считался бы мёртвым.

Замер после: те же операции отвечают мгновенно, первая проверка — 1.5 с.
Проверено в двух режимах недоступности: закрытый порт и молчащий адрес.

Тесты закрепляют поведение: запись, разбор фразы и поиск при мёртвом адресе
обязаны укладываться в 3 секунды и работать по существу — вещь записывается
без тегов, фраза разбирается регулярками, поиск идёт по словам.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 17:56:46 +03:00
co-authored by Claude Opus 5
parent 5926967270
commit 781690365e
4 changed files with 143 additions and 6 deletions
+11 -2
View File
@@ -185,8 +185,9 @@ ollama pull bge-m3
## Что если Ollama выключен
Если Ollama на отдельной машине, она бывает выключена. Приложение это переживает:
наверху появляется предупреждение, а работает почти всё.
**Приложение работает и без Ollama вообще** — можно поставить и пользоваться,
не устанавливая её. Наверху появится предупреждение со ссылкой в настройки,
а всё основное останется на месте.
| | Ollama есть | Ollama нет |
|---|---|---|
@@ -196,6 +197,14 @@ ollama pull bge-m3
| Разбор свободных фраз | модель | упрощённо, регулярками |
| Поиск по смыслу | да | нет |
**Ожидания это не добавляет.** Если машина с Ollama выключена, пакеты уходят
в никуда, и без защиты каждый вызов честно ждал бы свой таймаут: замер показал
92 секунды на запись одной вещи и 154 на разбор фразы — выглядит как зависание.
Поэтому в `ollama.py` стоит предохранитель: перед дорогим запросом идёт быстрая
проверка соединения (полторы секунды вместо двух минут), а после неудачи
приложение полминуты вообще не тревожит сервер. Замер после: те же операции
отвечают мгновенно. Смена адреса в настройках сбрасывает паузу сразу.
Модели: `qwen2.5:7b` для разбора фраз (в конфиге — `CHAT_MODEL`).
Не `omnicoder-9b`: тот ризонер, пишет `<think>` прямо в ответ и медленнее.