Как передать последние несколько строк файла в Django?

В целях мониторинга я хотел бы передать последние N строк файла журнала в интерфейс веб-сайта Django. Как отображение результата команды tail -f filename.

По сути, я хотел бы сделать то же самое, что и supervisord, который позволяет регистрировать процесс из своего http-интерфейса.

Любая идея о том, как это сделать?


person Arnaud    schedule 06.07.2012    source источник
comment
Взгляните на pypi.python.org/pypi/webtail/0.1b16.   -  person Tisho    schedule 06.07.2012
comment
возможный дубликат tail -f в веб-браузере   -  person Martijn Pieters    schedule 06.07.2012
comment
@MartijnPieters, я хочу поймать хвост -f, а затем отобразить его, этот вопрос отвечает только на второй вопрос.   -  person Arnaud    schedule 06.07.2012
comment
@Arnaud: вы не будете следить за сервером; включите позицию файла в ответ, и в следующий раз, когда JS вызовет представление Django, используйте эту позицию файла, чтобы прочитать больше данных, если они есть.   -  person Martijn Pieters    schedule 06.07.2012
comment
Webtail было бы неплохо, если бы nginx разрешал обратный прокси-сервер websocket. Но это не так. Любая проблема безопасности при открытии порта только для соединений через веб-сокет?   -  person Arnaud    schedule 06.07.2012
comment
@Tisho, пожалуйста, создайте ответ с упоминанием веб-сайта, торнадо или твиста или любой другой библиотеки, обрабатывающей веб-сокеты для Python, и я приму это, потому что ваш комментарий является наиболее близким к решению, которое я искал.   -  person Arnaud    schedule 14.01.2013


Ответы (2)


В соответствии с запросом ОП, вот пример использования webtail:

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

Как я понял из комментариев - ОП нужно решение, поддерживающее веб-сокеты. Вебтейлс делает. Если вы посмотрите в файле webtail.py:

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

где TailHandler:

from tornado.websocket import WebSocketHandler

....

class TailHandler(WebSocketHandler):

Я использую это для мониторинга множества журналов, и это работает как шарм :)

person Tisho    schedule 14.01.2013

если вам нужно в панели администратора, вы можете проверить django_logtail здесь.

помимо этого есть вопрос здесь, если вам интересно...

person Aragon    schedule 06.07.2012