Python 脚本在 Mac 启动时设置为 运行 不会停留在 运行ning

Python script set to run on boot on Mac will not stay running

我有一个 Python 脚本,我想在启动时 运行 并在 Mac 上连续保持 运行ning。我相信脚本正在执行,但它不会保持 运行ning.
该设置是一个加载了 launchctl 的 plist 脚本,用于在启动时启动一个 Python 脚本——它应该始终保持 运行ning。
(始终 运行ning)Python 脚本使用 'schedule' 模块,该模块应在特定时间执行功能。
我怎样才能使这个脚本 运行 只要计算机处于打开状态?我可以在某个地方看到它 运行 吗?

具体来说:如果我 运行 只是在终端中手动 Python 脚本,它会连续 运行s,并在指定时间使用调度模块执行函数。
如果我在启动时加载了 plist 脚本,那么 Python 脚本并没有在指定的时间执行函数,如果我将 Python 脚本更改为一次执行函数,那么 plist 脚本将执行它启动。
[在下面的所有代码中,将“/path/to”更改为您的路径,如果要复制,则更改为您的 Mac 的用户名等。]
plist 脚本...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>Run.The.FB.photoblast</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/python</string>
        <string>/path/to/python/script.py</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/var/log/python_script.error</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>  

我把这个文件保存到

/Users/<user_name>/Library/LaunchAgents/FB_Photo_script_launcher.plist  

和运行...

sudo launchctl load -w /Users/<user_name>/Library/LaunchAgents/FB_Photo_script_launcher.plist  

下面的 Python 脚本应该 post 一张照片到 1:00pm 的 Facebook 页面。 (对于我的问题,Python 脚本可以做任何可衡量的事情)。由于底部的 'while True',此脚本应始终 运行ning 并等待 'schedule.run_pending()' 触发。

import os
import time
import glob
import random
import facebook
import schedule

#wait 13 seconds to give the computer time to wake up
time.sleep(13)

def job():
  allphotofiles = glob.glob('/users/<user_name>/documents/fbcal/photos/*.jpg')
  one_photo = allphotofiles[random.randint(0, len(allphotofiles)-1)]
  #one_photo = glob.glob(one_random + '/*.jpg')[0]

  d = {
      'Calg Big': 'FACEBOOK_PAGE_TOKEN'}
  for i in d:
      graph = facebook.GraphAPI(access_token=d[i], version='3.1')
      graph.put_photo(image=open(one_photo, "rb"))
      print(i)


  os.rename(one_photo, '/users/<user_name>/documents/fbcal/used/'+one_photo[43:])

# job()

schedule.every().day.at("13:00").do(job())

while True:
  schedule.run_pending()
  time.sleep(1)  

感谢您阅读这个问题。我的情况很复杂。也许我需要一个完全不同的方法。我尝试使用 Automator 制作一个 'app',但有几个问题。 Automator 的 Python 版本无法导入 Facebook SDK,当我手动或启动应用程序时,我的电脑粉丝会 运行 全速运行。我不知道如何安排它,我已经在 Python 脚本中处理了安排部分。我只需要 Python 脚本在启动时 运行 并且永远不会停止 运行ning。 是否有另一个计时器可以让我每天在同一时间触发脚本而无需使用 Automator?

我刚刚删除了 Python 脚本中的调度,并将函数设置为在调用脚本时触发。然后每天下午 2 点为 运行 创建一个 cron 作业。

EDITOR=/usr/bin/nano crontab -e

0 14 * * * 是每天下午 2 点

0 14 * * * /anaconda3/bin/python /Users/mycomputername/Documents/FBcal/s2cheduler.py >> ~/cron.log 2>&1