У меня есть такой вопрос - что такое правильный путь к вилке в приложении PSGI/Plack?Правильный путь к вилке в приложении PSGI/Plac (Perl)
С одной стороны, я знаю, что приложение PSGI является «backend-agnostic», поэтому его можно запустить с использованием разных методов - FastCGI, CGI и т. Д. Но, с другой стороны, я знаю, что, например, в приложении FastCGI нам нужно сделать некоторые манипуляции с FCGI :: Request объектом до/после fork.
Итак, что я должен делать?
- Только вилка :)
- делать какие-то магические манипуляции и вилки (что манипуляции?)
- архитектуры приложения Rewrite => переместить все тяжелые операции во внешний процесс-демон.
О, я понимаю, что, но я просил что-то еще Да, мы можем запустить приложение PSGI, используя различные движки, используя различные обработчики прогонов - FCGI, CGI, встроенные серверы PSGI как Starman и т.д. и т.п. Но как я могу раскошелиться в моем app - когда я не знаю, в каком окружении мое приложение запустилось, но для этой _current_ среды может потребоваться некоторая специальная инициализация для правильного форкирования? –
«Викинг» ваше приложение обрабатывается контейнером. Для всех целей процесс FCGI - это ваше приложение, сервис Starman - это ваше приложение. Они действуют как контейнеры вашего кода и как интерфейс между прокси и вашим кодом. Например, если вы выберете Apache/FastCGI, вы сообщите apache, сколько процессов fastcgi для fork и какие URI передаются серверам fastcgi. Вы не вручную разблокируете свое приложение. –
Вы совершенно правы, но я спрашиваю о чем-то другом :) Возможно, виноват мой плохой английский) Я спрашивал о «ручной» вилке в своем приложении. Например -> app recv some request и должен выполнить некоторую тяжеловесную операцию, которая может занять много времени. Итак, я создаю дочерний процесс с помощью вызова fork() и запускаю эту операцию в дочернем процессе. Вопросы о IPC, о том, как пользователь получает результат, когда это делается, и т. Д. - пусть остается за сценой. Основная проблема заключается в вызове fork(). –