Итак. Рабочий набросок тут
https://gist.github.com/Dihset/25701e055861856bfd52d4ed864783cb
Почему именно так?
Я хочу
1) Не зависеть от последовательности middleware.
2) Зависимости прокидывать как зависимости
3) Вызывать handler отдельно в любом месте. Хоть в REPL, хоть в любых местах программы и не провоцировать вызов логики похода и обработки ключей.
Минусы
1) Неявная связность через contextvar
2) Нужно будет определять на уровне middleware в какой handler мы сейчас идем
3) Маппинг StreamingResponse в обычный Response. (Но тут я долго не думал. Мб что то можно и внятное придумать)
Но я готов с этими минусами мириться)
Решение тестовое. Нужно доделать получение handler внутри middleware (это не сложно делается). Что бы скипать handler без декораторов
P.S. само собой логика ключей должна быть сильно сложнее)

Gist
idempotency_key.py
GitHub Gist: instantly share code, notes, and snippets.
5February 25, 2026 1.2K 16 2