Я работаю над сценарием Perl, который выполняет некоторую периодическую обработку на основе содержимого файловой системы. Общая структура выглядит следующим образом:
# ... initialization...
while(1) {
# ... scan filesystem, perform actions depending on changes detected ...
sleep 5;
}
Я хотел бы добавить возможность ввода некоторых данных в этот процесс посредством предоставления интерфейса через HTTP. Например, я хотел бы добавить конечную точку, чтобы пропустить режим сна, а также некоторые средства для ввода данных, которые обрабатываются в следующей итерации. Кроме того, я хотел бы иметь возможность запрашивать некоторые состояния программы через HTTP (т.е. недостаточно просто fork()
запустить часть веб-сервера в отдельном процессе?)
Пока я уже использовалфреймворк Dancer2
один раз, но у него есть вызов start;
, который блокирует и, следовательно, не позволяет запускать какие-либо другие задачи (например, мой цикл). Кроме того, я, конечно, мог бы переместить код, который в настоящее время находится внутри цикла, в конечную точку, доступную через Dancer2
, но тогда мне нужно будет периодически вызывать ее (хотя внешняя программа?), Что кажется довольно неясным косвенным обращением по сравнению с простоесли веб-часть сервера работает в фоновом режиме.
Можно ли ненавязчиво (т.е. не блокировать программу) добавить возможность REST-сервера в сценарий Perl? Если да: какие модули будут использоваться для этой цели? Если нет: Должен ли я действительно реализовывать внешний процесс, чтобы периодически вызывать определенную конечную точку или использовать другое решение?
(Я пытался добавить тег dancer2
, но не смог сделать это из-за недостаточной репутацииНе вводите в заблуждение этим: я до сих пор пробовал только с Dancer2
, а не с Dancer
(v.1))