
大丈夫、
Flask
が利用できます
どうやら、
log_request
関数からは(スレッド内で実行されるときに)引数データが見えなくなっている
ようです。インタプリタが後片付けをして(
do_search
が終了しているために)これらの変数が使用したメ
モリを回収してから時間が経っているからです。つまり、
request
オブジェクトはアクティブではなくなっ
ているので、
log_request
は見つけることができません。
それでは、どうすればいいのでしょうか?心配しないでください。すでにあるものを使って解決できます。
11 3/4
章 スレッド入門
you are here
471
来週予定を入れておくわ。きっと
そのときに
log_request
関数を
書き直すように言うのでしょう?
実は書き直す必要はありません。
一見、(可能であれば)何とかして引数に頼らないように
log_request
を書き直さなくてはいけないと考えるかもしれません。しかし、こんなと
きこそ
Flask
のデコレータの出番です。
copy_current_request_context
デコレータは、関数の呼び出
し時にアクティブな
HTTP
リクエストが、その後にスレッド内でその関
数を実行したときでもアクティブのままであるようにします。このデコ
レータを使うには、
Web
アプリケーションコードの先頭のインポート行に
copy_current_request_context
を追加します。
他のデコレータの場合と同様、
@
構文で既存の関数に適用します。しか