Какие факторы влияют на механизм перезапуска приложений Catalyst? - PullRequest
2 голосов
/ 16 августа 2011

У меня есть приложение Perl Catalyst, которое обычно запускается с помощью параметра -r. Я заметил 2 типа поведения:

1) приложение перезапускается нормально при каждом «фиктивном изменении» кода (под «фиктивным изменением» я подразумеваю добавление пробела или его удаление, что-то вроде этого)

2) приложение не перезапускается (то же самое «фиктивное изменение»), отображается текст «Попытка перезапустить сервер», и приложение остается заблокированным в этом состоянии (мне нужно kill это вручную)

Поведение зависит от фактического кода. Кажется, что-то связано с кодом, который влияет на поведение, которое действует в один момент. Поведение является постоянным, то есть один и тот же код имеет одно постоянное поведение, равное 2.
Само приложение работает нормально, без ошибок и предупреждений.

Как код может повлиять на это поведение? (Я имею ввиду вообще) Какие факторы связаны с механизмом перезапуска?

Ответы [ 2 ]

1 голос
/ 06 июля 2012

Это связано с тем, что в более новой версии клиента Oracle изменилась обработка сигналов. Используйте параметр «ora_connect_with_default_signals» для восстановления обработчика сигналов по умолчанию.

Вот как вы можете сделать это в модели DBIx :: Class (MyApp :: Model :: DB):

connect_info => [
    'dbi:Oracle:mydb',
    'username',
    'password',
    {
        ora_connect_with_default_signals => [ 'INT' ],
    },
],

или в конфигурационном файле:

<Model DBIC>
    connect_info  dbi:Oracle:mydb
    connect_info  username
    connect_info  password
    <connect_info>
        ora_connect_with_default_signals [ INT ]
    </connect_info>
</Model>
0 голосов
/ 17 августа 2011

Я видел похожее поведение при использовании автономного сервера через PSGI (т. Е. plackup -r), когда сервер перезагружается один раз, а последующие изменения кода выдают сообщение, но перезапуска нет.

Однако я никогдавидел, как встроенный сервер myapp_server.pl -r ведет себя таким образом.Любое изменение в модуле perl, файле YAML и т. Д. Успешно запускает перезапуск.

В кратком исследовании, которое я провел над ним, я включил это обсуждение Plack и перезапустил .

...