Pull to refresh

Comments 4

Может, мы где-то изобрели велосипед?

Массовыми автоматическими откликами вы гробите весь смысл пользования HH. А так норм.

  • on_shutdown не останавливает поиск, а просто идет в PostgreSQL и всем, у кого session_status = 'running', ставит session_status = 'paused'.

  • После этого бот штатно завершает работу.

Т.е. если процесс или контейнер бота будет прибит (или физический сервак жёстко перезагрузится) всё равно всё сломается?

ИМХО, напрочь не нужно отслеживать "кого мы начали обрабатывать". Если начали, но не закончили, и никаких ресурсов освобождать не нужно - значит, считаем, что не начали. А потому вполне достаточно знать, кого нужно обновлять в первую очередь - т.е. иметь очередь запросов (например, в порядке "кто давно не обновлялся" по метке времени последнего поиска).

Единственный момент - нужно сделать так, чтобы запрос из этой очереди не мог быть взятым разными воркерами одновременно. Возможно, добавить отдельный столбец для ID worker-а, и пытаться атомарно извлечь и пометить строку через SELECT ... FOR UPDATE. Или иметь отдельный кэш (локальный или redis, смотря что у вас воркеры - потоки или процессы) IDшников запросов "сейчас в работе" и выбирать строки, пока не найдём строку не в кэше.

Статья ни о чём. Использования БД для персистентного хранения стэйта - это настолько типовая практика, что про это стыдно писать как о каком-то интересном решении.

Вся статья написана исключительно ради рекламы.

Прямо открыли Америку))). Уже все разработчики знают, что нужно использовать БД, чтобы при перезапуске бот подтягивал с нее все данные

Sign up to leave a comment.

Articles