Pylons на OS X: правильно запустил plist для запуска и поддержки сервера pylons? - PullRequest
2 голосов
/ 13 апреля 2011

Обновление: это была просто ошибка импорта в приложении Pylons (так как $ PYTHONPATH отличается при запуске запускаемого задания), которая вызывала цикл повторного запуска при сбое. Большое спасибо тем, кто сказал мне посмотреть мои логи.

Привет всем,

Я нахожусь на OS X, пытаюсь настроить запускаемую работу, чтобы запустить и поддерживать мое приложение пилонов.

Я загружаю работу как обычно:

sudo launchctl unload /Library/LaunchDaemons/dvlf.plist

Я не вижу ошибок в терминале. Сервер никогда не подходит. Вместо этого я вижу это на консоли:

4/12/11 6:23:57 PM  com.apple.launchd[1]    (com.dvlf.pylons) Throttling respawn: Will start in 9 seconds

Вот файл .plist. Любые идеи с благодарностью!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.dvlf.pylons</string>
    <key>EnvironmentVariables</key>
        <dict>
                <key>PYTHON_EGG_CACHE</key>
                <string>/tmp/.python-eggs</string>
        </dict>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/paster</string>
        <string>serve</string>
        <string>--reload</string>
        <string>/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/production.ini</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>Umask</key>
    <integer>7</integer>
    <key>UserName</key>
    <string>_www</string>
    <key>WorkingDirectory</key>
    <string>/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/</string>
    <key>StandardErrorPath</key>
    <string>/var/log/dvlf_paster_error.log</string>
    <key>StandardOutPath</key>
    <string>/var/log/dvlf_output.log</string>
</dict>
</plist>

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Когда я видел «слишком быстрое возрождение» в системах инициализации SysV (записи / etc / inittab ), это происходило потому, что рассматриваемая программа использовала традиционную стратегию «двойной развил, а затем exec» для стать демоном. Многие такие программы (такие как sshd и sylogd ) поддерживают параметры командной строки (например, -D для sshd ), которые инструктируют их воздерживаться от fork() -ную.

Проблема заключается в том, что init (и, предположительно, launchd ) пытаются отслеживать процесс, чтобы обрабатывать их повторное порождение, если / когда они выходят. Когда программа пытается поставить себя в фоновом режиме (отключиться от родительского процесса, группы процессов и всей связанной обработки сигналов), это определяется как почти немедленный выход, который требует респауна. inittab (и, опять-таки, предположительно launchd ) накладывают ограничение скорости, чтобы одна из сбойных программ не оставляла систему слишком загруженной.

Решение этой проблемы: посмотрите, можете ли вы настроить эту dvlfs.pylons программу для запуска на переднем плане, или "не отсоединять", или "не демонизировать" ... терминологию на этот счет .

1 голос
/ 03 мая 2011

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

Из plist: у вас действительно есть эти каталоги / файлы?(проверьте все пути в вашем списке - самая распространенная ошибка)

/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/production.ini
/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/

, если нет, вы должны отредактировать свой список.

...