请求有关进行IPC /事件捕获的建议

时间:2012-01-09 23:59:47

标签: c++ python ipc redis distributed

我有一个简单的python服务器脚本,用于分离C ++程序的多个实例(比如说N)。 C ++程序生成一些需要捕获的事件。

事件当前正在日志文件中捕获(每个分叉进程1个日志文件)。此外,我需要定期(T分钟)获取跨所有子进程生成事件的速率到python服务器或一些其他程序监听这些事件(仍然不确定)。根据这些事件的速率,服务器可能会采取一些“重新操作”(比如减少分叉实例的数量)

我简要介绍了一些指示:

  • grep日志文件 - 浏览正在运行的进程日志文件(.running),过滤最后T分钟生成的条目,分析数据并报告
  • socket ipc - 将代码添加到c ++程序,将事件发送到某个服务器程序,该程序在T分钟后分析数据,报告并重新开始
  • redis / memcache(完全不确定) - 向c ++程序添加代码,使用一些分布式存储来捕获所有生成的数据,在T分钟后分析数据,报告并重新开始

请告诉我你的建议。

由于

2 个答案:

答案 0 :(得分:0)

作为套接字IPC建议的替代方案,如何0mq。它是一个库(在C中,可以使用python绑定),可以在线程间,进程间或机器间级别进行消息传输。很容易上手,非常快。

我不隶属于它。我只是将它用于其他用途,并认为它也适合你。

答案 1 :(得分:0)

如果时间不是很重要(T分钟听起来很长,相比于C ++程序中发生的任何事件都会被启动),那么就不要让事情变得比他们需要的更复杂。忘记IPC(套接字,共享内存等),让每个C ++程序记录您需要知道的关于时间/性能的内容,并让python脚本检查记录您需要数据的每T分钟。不要浪费时间过度复杂的事情,你可以用简单的方式做事