Google App Engine:cron会调用Cron处理程序,但不会运行任何代码

时间:2011-07-04 20:24:43

标签: google-app-engine cron handler

我有以下问题。我在Google App Engine中定义了一个cron作业,但我没有调用我的get方法(或者确切地说它是每隔一次调用一次 - 如果我手动运行它,它在第一次没有做任何事情,但在第二次它完美无瑕)。这是来自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

正如您所看到的那样GET/suggestions/上发出请求,但没有任何反应,包括我的日志消息(当我第二次手动运行时,它们会打印出来)。你有什么想法,为什么会发生这种情况?

我的经纪人:

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')

这是我的cron.yaml:

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

我app.yaml的正确部分:

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

1 个答案:

答案 0 :(得分:4)

main之后,您在处理程序文件的底部缺少此声明:

if __name__ == '__main__':
  main()

第一次运行处理程序脚本时,App Engine只是导入它,并且此代码段在这种情况下运行您的main。在后续请求中,App Engine会运行main函数(如果您定义了一个。