在花费大量时间试图解决此问题之后,我正在寻求帮助。
我有一个使用Selenium的Python脚本,该脚本必须每24小时在Mac上执行一次。这是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>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小时后或启动时再次运行。我该如何解决这个问题?
此外,假设在此脚本中提供了一段代码,例如:
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)
结尾的任务有关吗?
谢谢。