Как исправить код состояния launchctl 78 для скрипта Python? - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь использовать PRAW API для размещения бота для публикации ежедневных веток Википедии на / r / Wikipedaily, и я решил использовать launchd / launchctl, чтобы планировать запуск сообщений каждые 24 часа.Сценарий запускается (это запущенный процесс launchctl), но он постоянно имеет код состояния 78 для некоторой ошибки.

Я попытался поместить файл plist в LaunchAgents и LaunchDaemons, запустив его с помощью sudo, указав путьв Python env как в файле script, так и в файле launchd, и все 3 приводят к одному и тому же коду ошибки.Это не проблема с самим скриптом Python, я не думаю, что запуск этого вручную из командной строки, кажется, работает нормально.

Моя интуиция заключается в том, что проблема связана с самим файлом plist, что-тоделать со спецификацией среды Python или разрешениями для файлов / каталогов.Я дал разрешения скрипту Python через chmod + x, но этого может быть недостаточно.

Это файл plist (StartInterval имеет значение 60 для целей отладки, а не 86400, не работает независимо):

com.nathansbud.wikipedaily.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>com.nathansbud.wikipedaily</string>
        <key>Program</key>
        <string>/Users/zackamiton/Code/Wikipedaily/main.py</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/zackamiton/Code/Wikipedaily/main.py</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>StandardErrorPath</key>
        <string>/var/log/wikipedaily.log</string>
        <key>StandardOutPath</key>
        <string>/var/log/wikipedaily.log</string>
        <key>WorkingDirectory</key>
        <string>/Users/zackamiton/Code/Wikipedaily/</string>        
    </dict>
</plist>

Запуская его из командной строки, публикация Reddit работает просто отлично, но если запустить launchd для выполнения скрипта, произойдет сбой со следующим сообщением об ошибке в консоли:

  • Не удалось инициализировать службу: 18C54:xpcproxy + 11287 [1534] [EB0A8C9B-6A9A-3296-B905-73527C966685]: 0xd

  • Служба завершена с ненормальным кодом: 78

Он работает, по крайней мере, каждую минуту (согласно выводу консоли), но, к сожалению, 78 - это общий код ошибки, который мне мало что объясняет, и я не уверен, что делать со строкой xpcproxy.

Буду признателен за любую помощь в этом!Заранее спасибо!

...