我有以下问题。我在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
答案 0 :(得分:4)
在main
之后,您在处理程序文件的底部缺少此声明:
if __name__ == '__main__':
main()
第一次运行处理程序脚本时,App Engine只是导入它,并且此代码段在这种情况下运行您的main。在后续请求中,App Engine会运行main
函数(如果您定义了一个。