2

更新:失敗とリスポーンのサイクルを引き起こしていたのは、Pylonsアプリのインポートエラーでした(起動されたジョブの実行時に$ PYTHONPATHが異なるため)。私のログを見るように言ってくれた人たちに感謝します。

こんにちは、みんな、

私はOSXを使用しており、pylonsアプリケーションを起動して存続させるために、launchdジョブを設定しようとしています。

私はいつものようにジョブをロードします:

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>
4

2 に答える 2

2

SysV init システム ( /etc/inittabエントリ) で「再生成が速すぎる」のを見たことがありますが、それは、問題のプログラムが従来の「ダブル フォークしてから exec」戦略を使用してデーモンになるためです。多くのそのようなプログラム ( sshdsylogdなど) は、 -ingを控えるように指示するコマンド ライン スイッチ (たとえば、 sshdの -D) をサポートしています。fork()

問題は、init (およびおそらくlaunchd ) がプロセスを監視して、プロセスが終了した場合に再生成を処理しようとしていることです。プログラムが自分自身をバックグラウンドにしようとすると (親プロセス、プロセス グループ、および関連するすべてのシグナル処理から自分自身を切り離す)、これは再生成を必要とするほぼ即時の終了として検出されます。 inittab (および、おそらくlaunchd ) は、1 つの失敗したプログラムがシステムを過度にビジー状態にしないようにするためにレート制限を課しています。

この問題の解決策は、このdvlfs.pylonsプログラムをフォアグラウンドで実行するように構成できるかどうか、または「デタッチしない」または「デーモン化しない」... その効果に関する用語を参照してください。

于 2011-05-01T03:17:39.400 に答える
1

respawnメッセージは通常、起動直後にプロセスがクラッシュしたために発生します。これは、構成が正しくないためと考えられます。したがって、ログファイルを確認してください。

plistから:あなたは本当にこれらのdirs /ファイルを持っていますか?(plistのすべてのパスを確認してください-最も一般的なエラー)

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

そうでない場合は、plistを再編集する必要があります。

于 2011-05-02T20:36:25.587 に答える