2009年4月13日月曜日
Google App Engineのcronは、users.is_current_user_admin()では認証できない
先日作成したまとめの内容に間違いがありましたので、訂正してお詫びさせていただきます。
users.is_current_user_admin()を利用して、RequestHandler中にて起動ユーザーがcronかどうかを判定することが出来ると記事に掲載しておりましたが、
実際には出来ない模様です。
以下の方法にて検証を行いました。
1.まずはこのようなRequestHandlerを作る
2.cron.yamlを記述する
3.本番環境にデプロイして、admin consoleから確認してみる
ごらんの通り、users.get_current_user()の結果がNoneになります。
おそらく2009年04月13日現在では、Google公式のドキュメントにあるとおりapp.yamlで指定する以外にcron起動かどうかの認証を行う方法はなさそうです。
users.is_current_user_admin()を利用して、RequestHandler中にて起動ユーザーがcronかどうかを判定することが出来ると記事に掲載しておりましたが、
実際には出来ない模様です。
以下の方法にて検証を行いました。
1.まずはこのようなRequestHandlerを作る
class CronFetch(webapp.RequestHandler):
def get(self):
if not users.is_current_user_admin():
logging.warn('CronFetch invoked by non-admin user:%s' % users.get_current_user())
return
logging.info('CronFetch begin')
# この間に処理を記述
logging.info('CronFetch end')
2.cron.yamlを記述する
cron: - description: Test cron url: /cron/fetch schedule: every 1 hours timezone: Asia/Tokyo
3.本番環境にデプロイして、admin consoleから確認してみる
ごらんの通り、users.get_current_user()の結果がNoneになります。
おそらく2009年04月13日現在では、Google公式のドキュメントにあるとおりapp.yamlで指定する以外にcron起動かどうかの認証を行う方法はなさそうです。