Обработка сложных событий Python
Существуют ли какие-либо альтернативы Python, аналогичные Esper (Java и.NET), которые занимаются обработкой сложных событий (CEP)?
5 ответов
Случайный просмотр показывает, что это не очень распространенная проблемная область для Python (хотя и очень интересная!). На мой взгляд, наиболее подходящими являются рамки PEAK-Rules или dynrules.
Там может быть больше, но не широко известны (я буду искать немного больше)
Для вашего собственного копания: место для поиска проектов Python - это прежде всего PyPI.
(@ cues7a: Twisted, хотя и является фреймворком событий, находится на слишком низком уровне, чтобы его можно было сравнить с Esper.)
Изменить: Кажется, вы можете контролировать продукты CEP Sybase с Python
CEP-сервер ruleCore использует динамически загружаемые модули Python, которые можно использовать для его расширения. Внутренняя архитектура построена вокруг центральной шины событий, которая использует подход pub/sub. Таким образом, каждый модуль может подписываться на внутренние события и публиковать события на основе логики внутри модуля.
Да, http://nebrios.com/.
Вот статья в блоге, объясняющая, как она обрабатывает CEP. Он также может выполнять рабочие процессы через правила, взаимодействовать с любым API или людьми. Все ваши сценарии, конечно, чистый Python. Вот пример:
class high_temp_shutdown(NebriOS):
listens_to == ['shared.temperature']
def check(self):
return shared.temperature > 220
def action(self):
# only triggers if the check() is true
send_email("manager@example.com", "Temperature Peaked!!!")
warehouse.shutdown_generator()
# assuming this is an available call
Это не очень сложно, хотя. Дополнительные правила для обнаружения паттернов могут быть легко введены в ваш чек:
def check(self):
if shared.temperature > 220 and \
shared.outside_weather > 79 and \
dropbox.weekly_report_exists == True
return True
Действие () может быть предупреждением и / или может вызывать другое действие или выполнять какой-либо вызов API. Это просто Python, поэтому вы не ограничены.
Проект Kaskada не совсем является инструментом CEP, но он имеет некоторое сходство с системами CEP и предоставляет клиент Python, предназначенный для сред ноутбуков, таких как Jupyter.
Например, вы можете запросить такие данные, как «сколько просмотров страниц произошло с момента последней покупки, которую пользователь совершил»:
PageView | count(window=since(Purchase))
Язык запросов Kaskada основан на идее временной шкалы, и многие операции, предоставляемые языками CEP (последующие, повторенные и т. д.), имеют аналоги в языке запросов Kaskada.
Отказ от ответственности : я участвую в проекте Kaskada.