Я использую Пирамиду 1.4. Я хотел бы сгенерировать некоторые пользовательские события Pyramid из классов моей модели. События генерируются так:
request.registry.notify(MyCustomEventType("Here it comes"))
Как видите, мне нужен доступ к реестру приложений. Мне известно о get_current_registry()
< /а> функция. Но меня также беспокоит этот комментарий с сайта Pyramid:
«Эту функцию следует использовать крайне экономно, обычно только в коде модульного тестирования»
Вопросы:
- Является ли генерация событий Pyramid из уровня данных (модели SQLAlchemy) плохой идеей?
- Если нет, как более цивилизованно получить доступ к реестру приложений? (Возможно расширение
Base
модели?) - Если да, есть ли альтернатива, которую я мог бы использовать? Я знаю о событиях SQLAlchemy, но не смог найти возможность генерировать пользовательские события.
Обоснование:
По сути, я разделил свое приложение на функции и стараюсь, чтобы они не были связаны. Для этого мне иногда нужен IoC: я планировал использовать события как средство для этого. Например, всякий раз, когда пользователь отвечает на вопрос, генерируется событие. Затем на такое событие можно подписаться в других частях приложения. Мне нравится хранить логику приложения в моделях, а не в представлениях. Отсюда и описанная проблема.