私はピラミッド1.4を使用しています。モデル クラス内からいくつかのカスタム Pyramid イベントを生成したいと考えています。イベントは次のように生成されます。
request.registry.notify(MyCustomEventType("Here it comes"))
ご覧のとおり、アプリケーション レジストリにアクセスする必要があります。機能を意識していget_current_registry()
ます。しかし、ピラミッドのウェブサイトからの次のコメントも気になります。
「この関数は非常に慎重に使用する必要があり、通常は単体テスト コードでのみ使用してください」
質問:
- データ層 (SQLAlchemy モデル) から Pyramid イベントを生成することは一般的に悪い考えですか?
- そうでない場合、より文明的な方法でアプリケーション レジストリにアクセスする方法は? (拡張
Base
モデルかな?) - はいの場合、使用できる代替手段はありますか。SQLAlchemy イベントは認識していますが、カスタム イベントを生成する機能が見つかりませんでした。
根拠:
基本的に、私は自分のアプリを機能に分割し、それらを分離したままにしようとしています。そのためには、IoC が必要になることがあります。そのための手段としてイベントを使用することを計画していました。たとえば、ユーザーが質問に答えるたびに、イベントが発行されます。次に、そのようなイベントをアプリケーションの別の部分でサブスクライブできます。ビューではなく、モデルにアプリケーション ロジックを保持するのが好きです。したがって、説明されている問題。