Рекомендуемый шаблон связи для веб-интерфейса приложения командной строки - PullRequest
1 голос
/ 07 июня 2011

У меня есть приложение на Perl, которое обрабатывает текстовые файлы из локальной файловой системы (воспринимайте это как слишком сложный grep).Я хочу разработать веб-приложение, которое позволит удаленным пользователям вызывать приложение Perl, устанавливая необходимые параметры.Как только он запустится, было бы желательно какое-то взаимодействие между приложением perl и веб-приложением о состоянии процесса (запущено, выполнено, выполнено,%).Какой будет рекомендуемый способ связи между двумя процессами?Я думал в таблице базы данных, но я не совсем уверен, что это хорошая идея.

любые предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Stackers, продолжайте и отредактируйте этот ответ, чтобы добавить примеры кода или ссылки на них.

DrNoone, на ум приходят два подхода.

  1. callback

    Ваше приложение greppy должно предлагать функцию обратного вызова, которая возвращает статус и которая периодически вызывается веб-приложением.

  2. событие

    Это имеет смысл, если выуже используют каркас веб-сервера / приложения, который предоставляет цикл обработки событий, который можно использовать из внешних приложений (довольно маловероятно для Perl).Приложение greppy генерирует события при изменении статуса, а веб-приложение присоединяет / слушает их и действует соответственно.


Для IPC, как вы предполагаете, простая база данных не очень подходит,Посмотрите в очереди сообщений вместо этого.Для лучшего взаимодействия выберите совместимую с AMPQ реализацию.

0 голосов
/ 07 июня 2011

Если вы запустите процесс, используя open($handle, "cmd |"), вы сможете прочитать результаты в режиме реального времени и распечатать их прямо в STDOUT, пока ваш ответ открыт. Это, наверное, самый простой подход.

...