这是矫枉过正。有一个工具可以下载 google app engine log 并将它们转换为 sqlite。
http://code.google.com/p/google-app-engine-samples/source/browse/trunk/logparser/logparser.py
使用此工具,任务请求和普通请求的 cpm usd 将全部一起下载。您可以将每日日志存储到单独的 sqlite 文件中,并根据需要进行尽可能多的分析。
在将任务成本与原始请求相关联方面。使用此工具下载的日志数据包括logging
模块的完整输出。
- 所以你可以简单地在原始请求中记录一个生成 id
- 将 id 传递给任务。
- 在任务请求中再次记录收到的 id。
- 通过 id 找到正常和任务请求对。
例如:
# in org request
a_id = genereate_a_random_id()
logging.info(a_id) # the id will be included
taskqueue.add(url='/path_to_task', params={'id': a_id})
# in task request
a_id = self.request.get('id')
logging.info(a_id)
编辑1
我认为还有另一种可能的方法来估算正常请求+任务请求的成本。诀窍是将异步任务更改为同步(假设成本相同)。我没有尝试过,但尝试起来要容易得多。
# in org request, add a variable to identify debug
debug = self.request.get('DEBUG')
if debug:
self.redirect('/path_to_task')
else:
taskqueue.add(url='/path_to_task')
因此,在使用 DEBUG 参数测试正常请求时。它将首先处理正常请求,然后为正常请求返回 x-appengine-estimated-cpm-us-dollars。稍后它会将您的测试客户端重定向到相关任务请求(任务请求也可以作为正常请求通过 url 客户端访问和触发)并为任务请求返回 x-appengine-estimated-cpm-us-dollars。您可以简单地将它们加在一起以获得总成本。