我試圖更改os.environ字典來模擬Google App Engine上的登錄用戶,如https://stackoverflow.com/a/6230083/1241454所述。Google App Engine os.environ更改需要模塊重新加載
from google.appengine.api import users
import webapp2
import os
class TestPage(webapp2.RequestHandler):
def get(self):
os.environ['USER_EMAIL'] = '[email protected]'
user = users.get_current_user()
self.response.out.write(user.email())
這是行不通的。在上面的例子中,get_current_user()
對我而言至少在開發服務器上運行時返回無。當使用testbed.setup_env()
而不是直接編輯os.environ時,我會得到相同的結果。但是,下面的確實工作:
from google.appengine.api import users
import webapp2
import os
class TestPage(webapp2.RequestHandler):
def get(self):
os.environ['USER_EMAIL'] = '[email protected]'
reload(users)
user = users.get_current_user()
self.response.out.write(user.email())
唯一的變化正在改變os.environ後重裝的用戶模塊。這是預期的行爲,還是我的App Engine設置有問題?我的理解是,Python/App Engine應該只加載一個加載到系統中的os模塊副本,而不是兩個。
任何想法?這對我來說非常混亂。
貌似問題是,我運行上面的代碼關閉dev_appserver.py的。衛生署。 – 2012-04-06 07:35:02