2009年4月13日月曜日

Google App Engineのcronは、users.is_current_user_admin()では認証できない

先日作成したまとめの内容に間違いがありましたので、訂正してお詫びさせていただきます。

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起動かどうかの認証を行う方法はなさそうです。
投稿時間:

AltStyle によって変換されたページ (->オリジナル) /