2016-09-08 9 views
0

무한정 실행될 Python 스크립트를 작성했습니다. PyInotify을 사용하여 디렉토리를 모니터하고 Multiprocessing 모듈을 사용하여 외부 스크립트를 통해 해당 디렉토리에서 작성된 새 파일을 실행합니다. 그것들은 모두 위대한 작품.파이썬 서비스 - 타임 스탬프가 포함 된 파일 이름 쓰기

내가 겪고있는 문제는 출력을 파일에 쓰는 것입니다. 내가 선택한 파일 이름은 현재 날짜 (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 다음 시간은 결코 일어나지 않습니다.

이 작업을 수행 할 때 고려해야 할 사항이 있습니까? 파이썬 스크립트를 무기한으로 실행하지 못한 것이 있습니까?


찍은 후. 마치 PyInotify가 내 문제였던 것 같습니다. 여기를 참조하십시오 (https://unix.stackexchange.com/questions/164794/why-doesnt-inotifywatch-detect-changes-on-added-files)

답변

2

매분마다 파일 이름을 변경하도록 코드를 조정 했으므로 디버깅 속도가 빨라지지만 여전히 가설을 테스트합니다.

import datetime 
import gzip, time 
from os.path import expanduser 
while True: 
    now = datetime.datetime.now() 
    filename = expanduser("~")+"/%s-%s-%s-%s-%s.gz" % (now.year, now.month, now.day, now.hour, now.minute) 
    with gzip.open(filename, 'a') as f: 
     f.write(str(now) + "\n") 
     f.write("Data Dump here" + "\n") 
    time.sleep(10) 

이것은 문제없이 실행되는 것 같습니다. 내 PC의 시간대 변경도 선택되어 처리되었습니다. 위의 내용을 감안할 때, 귀하의 오류가 다른 곳에있을 수도 있고 주요 요점에 가치있는 디버그 인쇄가 필요할 수도 있습니다. 위와 같이 좀 더 세부적인 파일 이름을 사용하여 디버깅 속도를 높여보십시오.

+0

당신이 옳다고 생각합니다. 그것은 PyInotify 코드 자체와 관련이 있습니다. 디버깅을 돕기 위해 코드를 사용하겠습니다. – gleb1783

+0

업데이트보기 - 당신이 옳았다. – gleb1783

+0

업데이트 해 주셔서 감사합니다. –