如何在 Django 中流式传输文件的最后几行?

Arn*_*aud 6 python django tail stream supervisord

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

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

关于如何做到这一点的任何想法?

Tis*_*sho 3

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

$ webtail \
    --port=8000 \
    --files=/var/log/nginx/error.log,/var/log/nginx/access.log \
    --logging=warn
Run Code Online (Sandbox Code Playgroud)

据我从评论中了解到 - OP 需要一个支持 websockets 的解决方案。Webtails 确实如此。如果您查看 webtail.py 文件:

routes = [(r'/', MainHandler), (r'/tail/', TailHandler),
    (r'/signin/', SigninHandler), (r'/signout/', SignoutHandler)]
Run Code Online (Sandbox Code Playgroud)

哪里TailHandler

from tornado.websocket import WebSocketHandler

....

class TailHandler(WebSocketHandler):
Run Code Online (Sandbox Code Playgroud)

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