3

リクエストがすでにユーザーに送信されているが、後でDBで処理できるように情報が残っている、中間層でのイベントまたは何らかの作業はありますか?

4

2 に答える 2

3

おそらくすでに知っているように、リクエストを処理する 前に次のことを行うことができます。

リクエスト後の処理を (ミドルウェアを使用せずに) 行うには、完成したコールバックをリクエストに追加する必要があり ます。 request.Request.add_finished_callback

もちろん、完了したコールバックは 1 つのリクエストのスコープ内でのみ発生します。次の 2 つを組み合わせることで、すべてのリクエストを処理できます。

from pyramid.events import NewRequest

def do_something(request):
    # do something here
    pass

def setup_post_request(event):
    event.request.add_finished_callback(do_something)

config.add_subscriber(setup_post_request, NewRequest)
于 2011-02-17T17:04:55.917 に答える
1

Pylons では、各コントローラーは定義可能なbeforeメソッドとafterメソッドを持つことができ、コントローラー メソッドが呼び出される前/後に呼び出されます。

コントローラー呼び出しを含む lib/base.py ファイルもあり、そこにカスタム コードを追加することもできますが、すべての要求で呼び出され、コードでエラーが発生すると危険になる可能性があります。

ピラミッドではわかりません。

カスタム ミドルウェアで何かを行う場合、リクエスト オブジェクトとレスポンス オブジェクトにはアクセスできますが、他の素材にはアクセスできません。理論的には、データベース設定などの .ini 構成を解析できますが、それが本当にアプリの一部である場合は、そこに固執します。

于 2011-02-16T00:45:38.250 に答える