앱 엔진 자체에서 사용되는 패턴은 threading.local
인데 SDK 코드에서 grep 할 수 있습니다. os.environ 요청 로컬 만들기는 예를 들어 runtime/request_environment.py
에서와 같이 수행됩니다.
거친 예 : 다른 곳에서
import threading
class _State(threading.local):
"""State keeps track of request info"""
user = None
_state = _State()
당신이 핸들러 코드 초기에 인증 할 수 있습니다. 이제 BaseHandler 클래스 모든 요청을 상속하는 경우
class BaseHandler(webapp2.RequestHandler):
#A function which is useful in order to determine whether user is logged in
def initialize(self, *a, **kw):
#Do the authentication
self.username = username
class MainHandler(BaseHandler):
def get(self):
print self.username
- : 코드의 다른 부분에서 사용할 수있는
from state import _state
if authentication_passed:
_state.user = user
과 편리함을 제공하는이
from state import _state
def get_authenticated_user():
user = _state.user
if not user:
raise AuthenticationError()
return user
어떤 프레임 워크를 사용하고 있습니까? 아마도 당신은 미들웨어를 원할 것입니다. – geoffspear
프레임 워크가 없으며 단지 파이썬입니다. –
그런 다음 CGI 스크립트 시작 부분에 로컬 변수 값을 설정하십시오. ('main()'이라는 함수를 정의하지 않으면 각 요청 후에 모든 것이 버려 질 것입니다.) – geoffspear