AttributeError: у объекта 'SimpleLazyObject' нет атрибута 'match'
У меня есть приложение Django 3.2, работающее с gunicorn 23 на Python 3.9. Приложение находится в контейнере docker со всеми остальными зависимостями, установленными в virtualenv.
Я получаю эту ошибку:
Ошибка не исходит из моего кода, и самое странное, что она происходит в, казалось бы, случайных временных окнах (например, она может начаться в 4 утра и вернуться в нормальное состояние в 9 утра (без перезапуска приложения)). Когда приложение находится в состоянии «ошибка», большинство запросов не удается с этой ошибкой (~95%), но некоторые все же удается.
Я использую докерный образ upstream Python 3.9. Проект управляется uv
.
Ошибка происходит только в производственной среде (возможно, из-за количества запросов, но я не знаю). Это означает, что я не смог воспроизвести ее локально.
Я просмотрел, как реализована SimpleLazyObject
, чтобы лучше понять, что происходит. Я также попытался погуглить эту ошибку, но ничего не нашел.
Я не знаю, что может быть причиной такого странного поведения. Возможно, процессор каким-то образом сломан?
Скорее всего, это какое-то состояние гонки, вызванное Sentry SDK, который использует потоки и проверяет фреймы. Похоже, что это не очень хорошо работает с Django's SimpleLazyObject (или, более возможно, с функциями, вызываемыми им для получения / создания обернутого объекта), как видно из этой проблемы GitHub.
Похоже, что это уже исправлено, хотя в версии 2.18.0 Sentry SDK, обновление, скорее всего, должно устранить проблему. Если вы все еще сталкиваетесь с проблемой даже после обновления версии, попробуйте отключить Sentry и посмотреть, решит ли это проблему.