【问题标题】:Pylons on OS X: proper launchd plist to start and keep alive pylons server?OS X 上的 Pylons:正确启动 plist 以启动并保持活动 pylons 服务器?
【发布时间】:2011-04-13 06:45:18
【问题描述】:

更新:这只是 Pylons 应用程序中的一个导入错误(因为运行启动作业时 $PYTHONPATH 不同)导致失败重生循环。非常感谢那些让我查看日志的人。

大家好,

我在 OS X 上,试图设置一个已启动的作业来启动和保持我的 pylons 应用程序。

我照常加载作业:

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>

【问题讨论】:

  • 你必须建造额外的塔。如果做不到,请尝试收获更多矿物质。
  • 啊,对了,矿产,去采摘了,我马上回来。
  • 那些日志文件的内容是什么?你能把这些包括在问题里吗?
  • Chris R -- 您的评论实际上可能让我解决了这个问题。我会回来报告的。

标签: python macos plist pylons launchd


【解决方案1】:

当我在 SysV 初始化系统(/etc/inittab 条目)上看到“重生太快”时,这是因为有问题的程序使用传统的“双叉,然后执行”策略成为一个守护进程。许多这样的程序(例如 sshdsylogd)支持命令行开关(例如,-D 表示 sshd),指示它们不要使用fork()-ing.

问题在于 init(可能是 launchd)正在尝试监视进程,以便在它们退出时处理它们的重生。当程序试图将自己置于后台(将自己与父进程、进程组和所有相关信号处理断开连接)时,这将被检测为几乎立即退出,需要重新启动。 inittab(同样可能是 launchd)正在实施速率限制,以防止一个失败的程序使系统过度忙碌。

这个问题的解决方案看看你是否可以配置这个 dvlfs.pylons 程序在前台运行或“不要分离”或“不要守护”...术语效果。

【讨论】:

  • 谢谢吉姆,很高兴知道这一点。就我而言,我认为重生是由杀死进程的错误引起的,克里斯的建议是检查日志(duh)。如果这不能解决它,但我肯定会检查 pylons 粘贴服务器是否使用双叉执行技巧,以及这是否可能在这里发挥作用。
【解决方案2】:

respawn 消息通常是因为进程在启动后不久崩溃,可能是因为配置错误。因此,请检查您的日志文件。

来自 plist: 你真的有这些目录/文件吗? (检查 plist 中的所有路径 - 最常见的错误)

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

如果没有,您应该重新编辑您的 plist。

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 2011-12-20
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2010-11-14
    • 2014-12-15
    • 2011-08-01
    相关资源
    最近更新 更多