Задание Cron (скрипт Python) не записывает файл JSON - PullRequest
1 голос
/ 23 мая 2019

Ubuntu machine 18.04 работает на AWS EC2. У меня есть скрипт Python, который опрашивает API и записывает результаты в файл JSON в том же каталоге. Я установил работу cron, которая запускается каждые 5 минут. Проблема в том, что задание выполняется, я вижу это в журналах, но файл не записывается. Когда я запускаю сценарий вручную, файл json записывается, как и ожидалось.

Разрешения для папок и файлов .py - 775.

Вот запись в crontab (я получаю к ней доступ с sudo crontab -e):

*/5 * * * * ubuntu python3 /home/ununtu/var/www/html/api.py > 
/home/ubuntu/var/www/html/cron.log 2>&1

Файл cron.log показывает ожидаемый результат работы скрипта python. /var/log/syslog показывает:

(root) CMD (ubuntu python3 /home/ununtu/var/www/html/api.py > 
/home/ubuntu/var/www/html/cron.log 2>&1) 

каждые пять минут.

Пожалуйста, помогите мне разобраться в этом.

1 Ответ

0 голосов
/ 23 мая 2019

У меня была та же проблема, и я не смог ее исправить ...

В моем случае я решаю ее, используя библиотеку Python (BlockingScheduler), и выполняю ее в фоновом режиме с помощью tmux.

Простой пример использования:

from apscheduler.schedulers.blocking import BlockingScheduler

def test():
    test_write = 'hello'
    with open('logs.txt', 'a') as f:
        f.write('test: {}\n'.format(test_write))


scheduler = BlockingScheduler()
scheduler.add_job(test, 'interval', seconds=5)

scheduler.start()

Надеюсь, это поможет!

...