Google应用引擎任务队列和用户服务

rp9*_*p90 2 google-app-engine task-queue

我正在使用python和Google应用引擎.我想使用任务队列.作为任务队列处理程序的一部分,我检查当前用户是否是管理员(使用用户服务).此测试总是失败.有没有办法让这个测试通过?

更新:为了避免进一步混淆,我试图找出触发任务的用户是否是管理员(这只是一个简单的例子).我知道该任务正在从服务器运行,所有用户cookie早已不复存在.所以我跳过的答案是将会话转移到任务的方法

import logging
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import taskqueue

class MyRequesHandler(webapp.RequestHandler):
    def get(self):
        taskqueue.add(url="/task/")

class MyTaskHandler(webapp.RequestHandler):
    def post(self):
        if users.is_current_user_admin():
            logging.debug("admin")
        else:
            logging.debug("not admin")


def main():
    logging.getLogger().setLevel(logging.DEBUG)
    application = webapp.WSGIApplication([
            ('/', MyRequesHandler),
            ('/task/', MyTaskHandler)
        ],
        debug=True)
    run_wsgi_app(application)
Run Code Online (Sandbox Code Playgroud)

Nic*_*son 5

Users API反映了当前请求的登录用户的详细信息,显然在任务队列任务的情况下,没有用户,因为它是由任务队列系统启动的.在排队任务之前,您需要执行此检查,并将结果作为标志传递给任务.