5

この投稿は、 「GAE タスク キューで OAuth が必要な操作を行う方法」のフォローアップです。. この投稿で Bossylobster が示唆しているようuser_idに、スクリプトで をハードコーディングしようとしましたが、cron タスクは常に失敗します。

  • ログでトリガーされていることがわかります...

    2013-05-31 14:20:00.879 /update 302 5ms 0kb AppEngine-Google; (+http://code.google.com/appengine)
    0.1.0.1 - - [31/May/2013:11:20:00 -0700] "GET /update HTTP/1.1" 302 385 - "AppEngine-Google; (+http://code.google.com/appengine)" "myapp.appspot.com" ms=6 cpu_ms=0 cpm_usd=0.000043 queue_name=__cron task_name=... app_engine_release=1.8.0 instance=...
    
  • ...ただし、常に失敗し ( AppEngine のCron ジョブセクションに赤い「失敗」として表示されます)、実行するはずのタスク キューが[タスク キュー]セクションに表示されません。

私が理解していないのは、/update手動で開くと、以下のログインプロンプトが表示されることです。cronはどのようにそれをバイパスすることになっていますか? 何が起こっているのかをデバッグするにはどうすればよいですか?

GAE ログイン プロンプト

助けてくれてありがとう。

@dlebech回答のEDIT /フォローアップlogin: admin:関係する行に行をurl追加した後も問題は解決しませんapp.yaml。ローカルでは (管理者としてサインインし、ブラウザーでハンドラーの URL にアクセスして、Cron の URL をセキュリティで保護する で説明されているように) すべてうまくいきますが、デプロイすると、アプリは OAuth2 デコレーターを通過しません。

  • いくつかのデバッグprintステートメントで...

    import webapp2
    ...
    
    YOUTUBE_RW_SCOPE = "https://www.googleapis.com/auth/youtube"
    YOUTUBE_API_SERVICE_NAME = "youtube"
    YOUTUBE_API_VERSION = "v3"
    print "Building youtube object"
    print "Built youtube object"
    youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION)
    print "Building decorator object"
    decorator = OAuth2DecoratorFromClientSecrets(CLIENT_SECRETS, YOUTUBE_RW_SCOPE)
    print "Built decorator object"
    ...
    
    class FetchHandlerPage(webapp2.RequestHandler):
        print "Entering FetchHandlerPage"
    
        @decorator.oauth_required
        def get(self):
            print "Entering FetchHandlerPage:get"
            gae_user_id = USER_ID
            query_string = urlencode({'user_id': gae_user_id})
            taskqueue.add(url='/fetchworker?' + query_string, method='GET')
    
  • ... GAE ログに展開後に表示される内容は次のとおりです (ログは最後の行で停止し、次に何も起こりません)。

    2013-05-31 16:12:02.765 /fetch 302 1746ms 0kb AppEngine-Google; (+http://code.google.com/appengine)
    0.1.0.1 - - [31/May/2013:13:12:02 -0700] "GET /fetch HTTP/1.1" 302 385 - "AppEngine-Google; (+http://code.google.com/appengine)" "myapp.appspot.com" ms=1747 cpu_ms=844 cpm_usd=0.000070 queue_name=__cron task_name=... loading_request=1 app_engine_release=1.8.0 instance=...
    I 2013-05-31 16:12:02.444 URL being requested: https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest?userIp=0.1.0.1
    E 2013-05-31 16:12:02.764 Building youtube object
    E 2013-05-31 16:12:02.764 Built youtube object
    E 2013-05-31 16:12:02.764 Building decorator object
    E 2013-05-31 16:12:02.764 Built decorator object
    E 2013-05-31 16:12:02.764 End static variables
    E 2013-05-31 16:12:02.764 Entering FetchHandlerPage
    I 2013-05-31 16:12:02.765 This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This requ
    
4

1 に答える 1