将进程ID分配给异常请求龙卷风

时间:2015-03-31 10:02:31

标签: python tornado

我想创建一致的日志,以便我可以计算每个龙卷风请求的统计信息,我有如下请求:

@tornado.web.asynchronous
    def post(self):
    try:
        process_id = uuid.uuid4()
        logging.info("Incoming request (process_id: %s) to %s" % (str(process_id), self.__class__.__name__))

当请求进入时会打印一些信息,但请求在龙卷风代码中完成,只会打印出来:

[I 150331 10:55:09 web:1728] 200 POST /transform (127.0.0.1) 3017.19ms

有没有办法将我的进程ID传递给龙卷风(或让它创建一个),以便我可以连接请求的第一个和最后一个日志事件?

感谢,

1 个答案:

答案 0 :(得分:0)

通常,记录此类内容的最佳方法是将其附加到RequestHandler实例。对于日志记录,您可以覆盖有权访问处理程序的Application.log_request。如果需要在多个位置使用它,则可能需要将请求ID或RequestHandler实例传递给代码的其他部分。

如果你真的需要这种普遍存在的话,将StackContext用作类似threading.Local的东西是可能但很棘手,但明确传递它可能是最好的。