我正在使用AppEngine的deferred.defer,大致基于this example。
它在我的开发环境中运行良好,但在我部署的版本中,任务启动,然后无声地失败,然后重试。我可以在任务视图中看到任务,唯一的错误提示是在任务的“上一次运行”选项卡中显示:
上次http响应代码404
但我不知道404指的是什么。
我将函数中的logging.info语句传递给deferred,但没有任何内容写入日志。我已将整个事件包装在try / except块中,以及logging.error中的任何错误,但日志中仍然没有显示。
看起来有些事情阻止了任务的开始,但我不知道是什么。我已将内置添加到我的app.yaml:
application: xxx
version: xxx
runtime: python
api_version: 1
builtins:
- deferred: on
handlers:
...
我该如何调试?
由于
答案 0 :(得分:3)
事实证明任务试图在我的默认版本上运行,即使它是从不同版本调用的(感谢提示检查Nick)。
这是一个简单的解决方案。当第一次调用延期我做
version = os.environ['CURRENT_VERSION_ID'].split('.')[0]
deferred.defer(<fn_name>, <fn_variable>, _target=version)
由于
汤姆