Я написал сценарий Python, который будет работать бесконечно. Он контролирует каталог с использованием PyInotify
и использует модуль Multiprocessing
для запуска любых новых файлов, созданных в этих каталогах, через внешний скрипт. Все это отлично работает.Служба Python - запись имени файла с отметкой времени
Проблема, с которой я столкнулась, заключается в записи вывода в файл. Имя, которое я выбрал, использует текущую дату (с использованием datetime.now
) и теоретически должен катиться по часу, каждый час.
now = datetime.now()
filename = "/data/db/meta/%s-%s-%s-%s.gz" % (now.year, now.month, now.day, now.hour)
with gzip.open(filename, 'ab') as f:
f.write(json.dumps(data) + "\n")
f.close() #Unsure if I need this, here for debug
К сожалению, когда часы катятся - выход останавливается и никогда не возвращается. Никакие исключения не выбрасываются, он просто перестает работать.
total 2.4M
drwxrwxr-x 2 root root 4.0K Sep 8 08:01 .
drwxrwxr-x 4 root root 12K Aug 29 16:04 ..
-rw-r--r-- 1 root root 446K Aug 29 16:59 2016-8-29-16.gz
-rw-r--r-- 1 root root 533K Aug 30 08:59 2016-8-30-8.gz
-rw-r--r-- 1 root root 38K Sep 7 10:59 2016-9-7-10.gz
-rw-r--r-- 1 root root 95K Sep 7 14:59 2016-9-7-14.gz
-rw-r--r-- 1 root root 292K Sep 7 15:59 2016-9-7-15.gz #Manually run
-rw-r--r-- 1 root root 834K Sep 8 08:59 2016-9-8-8.gz
Эти файлы на самом деле не принадлежит корню, просто изменили их для общественного потребления
Как вы можете видеть, все файлы меток времени заканчиваются на: 59 и следующий час никогда не бывает.
Есть ли что-то, что я должен принять во внимание при этом? Есть ли что-то, что у меня пропало без возможности запуска скрипта Python?
После осмотра. Кажется, что PyInotify была моей проблемой. См. Здесь()
Я подозреваю, что вы правы. Он может лежать с самим кодом PyInotify. Я буду использовать ваш код для отладки. – gleb1783
См. Обновление - вы были правы. – gleb1783
Рад слышать, что вы его взломали - спасибо за обновление! –