Запрос предложений о проведении IPC / захвата событий - PullRequest
0 голосов
/ 10 января 2012

У меня есть простой скрипт на python-сервере, который разветвляет несколько экземпляров (скажем, N) программы на C ++. Программа на C ++ генерирует некоторые события, которые необходимо перехватить.

События в настоящее время записываются в файл журнала (1 файл журнала на разветвленный процесс). Кроме того, мне нужно периодически (T минут) получать скорость, с которой события генерируются во всех дочерних процессах, либо на сервер python, либо в какую-либо другую программу, прослушивающую эти события (все еще не уверенную). В зависимости от частоты этих событий сервер может предпринять некоторые «повторные действия» (скажем, уменьшить количество разветвленных экземпляров)

Некоторые указатели, на которые я кратко посмотрел:

  • файлы журнала grep - просмотрите файлы журнала запущенного процесса (.running), отфильтруйте записи, сгенерированные за последние T минут, проанализируйте данные и составьте отчет
  • socket ipc - добавить код в программу c ++ для отправки событий в какую-либо серверную программу, которая анализирует данные через T минут, сообщает и запускает заново
  • redis / memcache (не уверен полностью) - добавить код в программу на c ++, чтобы использовать распределенное хранилище для сбора всех сгенерированных данных, анализа данных через T минут, создания отчетов и повторного запуска

Пожалуйста, дайте мне знать ваши предложения.

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 января 2012

если время не имеет значения (T минут звучит так, как будто оно длинно по сравнению с какими-либо событиями, происходящими в запускаемых программах на C ++), то не усложняйте ситуацию, чем нужно.забудьте IPC (сокеты, общий доступ к памяти и т. д.), просто сделайте так, чтобы каждая программа на C ++ записывала то, что вам нужно знать о времени / производительности, и позволяйте скрипту python проверять журналы каждые T минут, когда вам нужны данные.не тратьте время на усложнение того, что вы можете сделать простым способом

0 голосов
/ 10 января 2012

В качестве альтернативы вашему сокету IPC, как насчет 0mq .Это библиотека (в C с доступными привязками Python), которая может передавать сообщения на уровне между потоками, между процессами или между машинами.Довольно просто начать и довольно быстро.

Я не связан с этим.Я просто оцениваю его для других целей и подумал, что он может подойти и вам.

...