【问题标题】:Plist keeps being loaded and does not end, and it does not exit when conditions are metplist一直加载不结束,满足条件不退出
【发布时间】:2019-11-10 23:31:32
【问题描述】:

在试图解决这个问题浪费了这么多时间之后,我正在寻求帮助。

我有一个使用 Selenium 的 Python 脚本,它必须每 24 小时在我的 Mac 上执行一次。这是列表

<?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>Label</key>
    <string>bot.subito</string>

    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/python3.8</string>
        <string>/Users/someuser/somedir/bot.py</string>
    </array>

    <key>StandardErrorPath</key>
    <string>/Users/someuser/somedir/errors/bot_subito.err</string>

    <key>StandardOutPath</key>
    <string>/Users/someuser/somedir/errors/bot_subito.out</string>

    <key>StartInterval</key>
    <integer>86400</integer>

    <key>RunAtLoad</key>
    <true/>

    <key>KeepAlive</key>
    <true/>

</dict>
</plist>

如您所见,我使用了RunAtLoad 键在启动时运行代码,KeepAlive 用于不让进程终止。不过,我可能错了这件事是如何运作的。 问题是,使用此设置,我的代码会被执行,但一旦完成,它就会重新开始!相反,我希望它在 24 小时后或启动时再次运行。我该如何解决这个问题?

此外,假设在此脚本中存在如下代码的 sn-p:

def compare_24h_date(date1, date2):
  def compare_24h_date(date1, date2):
    # Suppose date2 > date1
    if date1[:4] == date2[:4]:
        if date1[5:7] == date2[5:7]:
            if date1[8:10] != date2[8:10]:
                return True
            else:
                return False
    return True

if not compare_24h_date(timeOfPublishing, currTime):
    print("24 hours has not passed since last publish.\n")
    exit(0)

compare_24hrs_date 接受 2 个 datetime.datetime.now() 字符串并比较它们是否相等。由于此函数在大多数情况下返回 false,如果条件应该使我的任务结束,而这不会发生。这与不可能让任务以exit(0) 结束有关吗?

提前致谢。

【问题讨论】:

    标签: python macos launchd


    【解决方案1】:

    感觉就像KeepAlive 正在做你要求它做的事情,它让你的守护进程保持活力,而忽略了它成功退出的事实。

    试着明确告诉它,它应该让守护进程在成功退出时死掉。

    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict> 
    

    【讨论】:

    • 我会尽快尝试的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2021-08-22
    • 2014-01-18
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多