Фон
Я рассматриваю различные варианты архитектуры. Хотя я годами использовал SQL в качестве языка запросов, у меня ограниченный опыт работы с триггерами и хранимыми процедурами.
Проблема: интеграция PHP и Python через MySQL
В красном углу боксерского ринга у меня есть готовый PHP, который обрабатывает часть XML, отправляемую на сервер через HTTP, и записывает его в базу данных MySQL.
В синем углу кольца у меня есть демон, написанный на Python, который стремится быстро узнать о данных, которые были переданы, чтобы он мог обрабатывать их в реальном времени.
Сам боксерский ринг - Ubuntu (и, вероятно, Apache, но еще не подтвержденный).
Возможные решения
Я рассматриваю три различных способа связи между процессами.
Полностью переписать PHP на Python. Вероятно, это займет слишком много времени, чтобы быть жизнеспособным.
Патч PHP, чтобы он также записывал XML в сокет. Имейте поток Python, слушающий сокет. Это кажется возможным. Его нужно будет переписывать каждый раз, когда выходит новая версия PHP. Это также кажется немного уродливым.
Напишите триггер SQL, который сообщает коду Python, что база данных обновлена, и он может извлекать последние данные с помощью обычных запросов SQL. Это технология, с которой я не знаком, и, следовательно, этот вопрос:
Вопрос
Существует ли стандартная идиома для уведомления работающей программы Python о том, что другой процесс обновил таблицу MySQL?
Возможные ответы?
Я предполагаю, что ответ будет включать триггеры MySQL, но я рад, что мне сказали, что я ошибаюсь в дереве.
Исходя из моих исследований, я полагаю, что одним из ответов будет запуск выполнения произвольного исполняемого файла , который затем мог бы общаться через сокет с основным процессом, но я надеялся, что может быть что-то чуть более прямой - как вызов SQL API, который блокируется до срабатывания триггера.