使用不断更新来流式传输日志文本文件

时间:2013-12-11 10:22:36

标签: python logging streaming

我制作了一个将传感器数据保存在日志文件(服务器站点)中的程序。 该文件存储在临时目录(Ram-Disk)中。 每行包含一个时间戳和一个JSON字符串。 更新速率取决于传感器数据,但最快速度为每0.5秒。 我想要做的是,将此文件中的每个更新流式传输到客户端应用程序。 我有几种方法:

  • 可能是服务器站点(samba)上带有脚本(客户端站点)的共享文件夹,只需每0.5秒检查一次文件
  • 也许是在服务器上运行的另一个服务器程序,检查更新(但我不想这样做,因为Raspberry Pi很慢)

有没有人可能之前做过这样的事情并且可以分享一些想法?是否可能有一个python模块(它打开一个像流一样的文件,如果有什么改变,那么这个流是给它的)?经常检查文件是否更新是否明智?

2 个答案:

答案 0 :(得分:0)

要将日志文件流式传输到应用程序,您可以使用

tail -n 1000000 -f | application

(这将不断检查文件中的新行,然后将它们流式传输到应用程序,然后再次挂起,直到出现新行。)

这当然会在您的服务器上加载,因为查询是否有新行将被转发到Raspberry Pi执行它。服务器本身的一个小程序(用C语言编写,有一个不错的sleep)实际上可能比通过网络查询新行更少负担。

答案 1 :(得分:0)

我正在做那样的事情。 我在我的raspberry pi +客户端上运行了一个服务器,它解析服务器的输出并将其发送到Web上的另一台服务器。
我正在做的是本地服务器程序以块的形式写出它的数据。
每次写入数据时(顺便说一句,也在tmpfs上),它会将其写入不同的文件,因此在尝试解析文件时我不会收到错误,而其他内容正在写入该文件。

在写入文件之后,它启动客户端程序以解析和发送数据(使用子进程将文件名作为参数)。 对我很有用。