Почему словарь не обеспечивает идемпотентность запроса

Проверка и резервирование ключа не атомарны: оба запроса могут увидеть отсутствие записи до завершения другого. Потокобезопасность отдельной операции словаря не защищает весь сценарий.

Короткий ответ

Что ответить на собеседовании

Проверка и резервирование ключа не атомарны: оба запроса могут увидеть отсутствие записи до завершения другого. Потокобезопасность отдельной операции словаря не защищает весь сценарий.

Подробный разбор

Ответ с пояснениями

Условие

Два конкурентных запроса проверяют if key not in results, выполняют действие и записывают ответ. Ключ одинаковый. Почему операция может выполниться дважды?

Ответ

Проверка и резервирование ключа не атомарны: оба запроса могут увидеть отсутствие записи до завершения другого. Потокобезопасность отдельной операции словаря не защищает весь сценарий.

Нужно атомарно создать запись processing с уникальным ключом и согласованной областью пользователя. Сохраняйте отпечаток payload: тот же ключ с другим телом должен давать конфликт. Конкурентный повтор ожидает итог или получает статус. Для нескольких процессов локального словаря недостаточно; используйте общее устойчивое хранилище и определите восстановление после сбоя.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее