Я написал python скрипт для запуска определенных заданий cron и использования crontab для него.
Ниже приведен фрагмент кода:
import os
import inspect
from crontab import CronTab
def add_cron_job(scripts_list,frequency):
my_cron = CronTab(user='simrat')
for script in scripts_list:
if not cron_exists(my_cron,script):
command = 'python {}'.format(script)
job = my_cron.new(command=command, comment=script)
job.minute.every(frequency)
my_cron.write()
def cron_exists(my_cron, script):
for job in my_cron:
if job.comment == script:
return True
return False
if __name__ == "__main__":
#Frequency of every 1 minute
test_script = ['test1.py', 'test2.py']
add_cron_job(test_script,1)
#Frequency of every 1 day
test_script2 = ['test3.py']
add_cron_job(test_script2,1440)
Ниже приведен вывод 'crontab -e' (обратите внимание, добавлены дополнительные пробелы)
* * * * * python test1.py # test1.py
* * * * * python test2.py # test2.py
*/1440 * * * * python test3.py # test3.py
Когда я повторно запускаю сценарий python cron_job, он каким-то образом отключает последний cron_job (test3.py), а после выводится crontab file:
* * * * * python test1.py # test1.py
* * * * * python test2.py # test2.py
# DISABLED LINE
# */1440 * * * * python test3.py # test3.py
*/1440 * * * * python test3.py # test3.py
вместе с ошибкой, которая выдается на консоли:
No handlers could be found for logger "crontab"
Итак, мой вопрос в 3 раза:
Почему дополнительное место в верхней части команды при запуске my_cron.write ()?
Почему он отключает последнее задание cron вместо того, чтобы игнорировать его, как оно уже существует (def cron_exits должен был занять позаботьтесь об этом)
Какое значение имеет выброшенная ошибка?