
지금 여기예요
4
511
스레드 맛보기
당황하지 말고 플라스크의 지원을
받으세요
지금까지 살펴본 내용에 의하면
log
_
request
함수를 스레드에서 실행하면 인자
데이터를
‘
사용
’
할 수 없을 것 같습니다.
do
_
search
함수가 끝나면서 인터프리터가
마무리 작업을 수행하고 변수가 사용한 메모리를 회수하기 때문입니다. 특히
request
객체가 만료되었으므로
log
_
request
에서 사용할 수 없습니다.
이제 어떻게 해야 하죠? 초조해하지 마세요. 도움이 손길이 오고 있으니까요.
이제 와서 ‘log_request’ 함수를 다시 구현해야
한다고 말할 것만 같아서 이성을 거의 잃었다고요.
아시겠어요?
다시 구현할 필요 없습니다.
얼핏 보면
log
_
request
가 인잣값에 의존하지 않도록 함수를
다시 구현해야 한다고 생각할 수도 있습니다. 하지만 플라스크의
장식자를 이용해 이 문제를 해결할 수 있어요.
copy
_
current
_
request
_
context
라는 장식자를
이용하면 함수를 호출했을 때 활성 상태인
HTTP
요청을 나중에
스레드에서 함수가 호출되는 순간에도 유지시켜 줍니다. 웹앱
코드 윗부분의 임포트 목록에
copy
_
current
_
request
_
context
를 추가하세요.
다른 장식자와 마찬가지로
@
문법을 이용해 기존 함수에 장식자를
적용할 수 있 ...