在应用引擎中有一个记录器实体来写日志是否可行?我将有一个 ~1500req/sec 的应用程序,并且正在考虑使用任务队列来完成它。每当我收到请求时,我都会创建一个任务并将其放入队列中以将内容写入日志实体(具有日期和字符串属性)。
我需要这个,因为我必须将统计数据放在站点中,我认为这样做并稍后使用后端读取日志可以解决问题。如果我可以通过编程方式访问应用程序引擎日志(从日志记录),那会很震撼,但由于那不可用,我看不到任何其他方式来做到这一点。
非常欢迎反馈
请您参考如下方法:
有几种方法可以做到这一点:
- 积累日志并将它们写入放在请求末尾的单个数据存储区中。这是延迟最高的选项,但只有一点点——数据存储放置速度相当快。此解决方案消耗的资源也是所有选项中最少的。
- 积累日志并将它们放入任务队列任务中,将它们写入数据存储区(或者用它们做任何你想做的事情)。这稍微快一些(任务队列入队往往很快),但它稍微复杂一些,并且限制为 100kb 的数据(希望这不应该是一个限制)。
- 使用数据将拉取任务排入队列,让常规推送任务或后端使用队列并批量插入数据存储区。这比选项 2 更复杂,但也更有效。
- 运行一个累积和写入日志的后端,并对其进行 URLFetch 调用以存储日志。 urlfetch 处理程序可以将数据写入后端的内存并异步返回,这使得它在增加的用户延迟方面成为最快的(urlfetch 调用不到 1 毫秒)!不过,这将需要等待 Python 2.7,因为您需要多线程来异步处理日志条目。
您可能还想看看 Prospective Search API,它可能允许您对日志数据进行一些过滤和预处理。
