【问题标题】:How to stream the last few lines of a file in Django?如何在 Django 中流式传输文件的最后几行?
【发布时间】:2012-07-06 07:39:25
【问题描述】:

出于监控目的,我想将日志文件的最后 N 行流式传输到 Django 网站界面。 就像显示 tail -f filename 命令的结果一样。

基本上我想做与 supervisord 相同的事情,它允许从其 http 接口记录进程。

你知道怎么做吗?

【问题讨论】:

  • tail -f in a webbrowser的可能重复
  • @MartijnPieters,我想抓住尾巴-f,然后显示,这个问题只回答了第二个问题。
  • @Arnaud:你不会在服务器端尾随;在响应中包含一个文件位置,下次 JS 调用 Django 视图时使用该文件位置读取更多数据(如果有)。
  • 如果 nginx 允许 websocket 反向代理,Webtail 会很好。但事实并非如此。只为 websocket 连接打开端口有什么安全问题吗?

标签: python django stream tail supervisord


【解决方案1】:

根据 OP 的要求,这是一个使用 webtail 的示例:

$ webtail \
    --port=8000 \
    --files=/var/log/nginx/error.log,/var/log/nginx/access.log \
    --logging=warn

据我从 cmets 了解到 - OP 需要一个支持 websockets 的解决方案。 Webtails 可以。如果你查看 webtail.py 文件:

routes = [(r'/', MainHandler), (r'/tail/', TailHandler),
    (r'/signin/', SigninHandler), (r'/signout/', SignoutHandler)]

TailHandler 在哪里:

from tornado.websocket import WebSocketHandler

....

class TailHandler(WebSocketHandler):

我用它来监控大量日志,它就像一个魅力:)

【讨论】:

    【解决方案2】:

    如果您需要在管理面板中查看,可以查看 django_logtail here

    除此之外还有一个问题here如果你有兴趣...

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多