2011-07-04 17 views
3

次の問題があります。私はGoogle App Engineでcronジョブを定義しましたが、getメソッドは呼び出されません(正確には、それは毎回呼び出されます。手動で実行すると、最初は何もしませんが、2番目それは完璧に動作します)。これは、クーロンによって行われたコールのロギングから出力さ:Google App Engine:cronハンドラがcronによって呼び出されましたが、コードは実行されません

2011-07-04 11:39:08.500 /suggestions/ 200 489ms 70cpu_ms 0kb AppEngine-Google; (+http://code.google.com/appengine) 
0.1.0.1 - - [04/Jul/2011:11:39:08 -0700] "GET /suggestions/ HTTP/1.1" 200 0 - "AppEngine-Google; (+http://code.google.com/appengine)" "bazinga-match.appspot.com" ms=489 cpu_ms=70 api_cpu_ms=0 cpm_usd=0.001975 queue_name=__cron task_name=a449e27ff383de24ff8fc5d5f05f2aae 

あなたは、私は手動でそれをもう一度実行するとき(これらは、印刷され、それは​​3210にGET要求を行いますが、何も起こりません、私のログメッセージなど、見ることができるように)。なぜこれが起こっているのか、あなたは何か考えがありますか?

マイハンドラ:

cron: 
- description: daily suggestion creation 
    url: /suggestions/ 
    schedule: every 6 hours 

と私のapp.yamlの適切なセクション:

- url: /suggestions/ 
    script: cron.py 
    login: admin 

答えて

4

あなたはこの宣言が欠落している。これは私のcron.yamlある

class SuggestionsHandler(RequestHandler): 

    def get(self): 
     logging.debug('Creating suggestions') 
     for key in db.Query(User, keys_only=True).order('last_suggestion'): 
      make_suggestion(key) 
     logging.debug('Done creating suggestions') 
     print 
     print('Done creating suggestions') 

ハンドラーファイルの末尾から、mainの後:

if __name__ == '__main__': 
    main() 

ハンドラスクリプトが初めて実行されるとき、App Engineは単純にそれをインポートします。このスニペットは、その状況でメインを実行します。その後のリクエストでは、App Engineはmain関数を定義していればそれを実行します。

+0

うわー!これは非常に予期しないことです。 StackOverflowでGoogleの開発者から直接サポートを受けていただきありがとうございます。私は今夜​​私のプロジェクトでこれを修正しようとします;-) – gruszczy

関連する問題