2012-07-26 2 views
4

pyinotify (process_IN_MOVED 이벤트)를 사용하여 디렉토리에 나타나는 파일을 감시하고 있습니다. 새 파일이 나타나면이 이벤트가 트리거되고 파일이 어떤 방식으로 처리됩니다. 문제는 때로는 파일을 처리 할 수있는 속도보다 빠르게 디렉토리에 나타나기 때문에 여러 파일이 처리되지 않는다는 것입니다. 10 초 동안 잠자기를하고 새 파일이나 다른 것을 찾기 위해 깨어 난 기능을 사용할 수는 있지만 가능한 경우 이벤트 기반 솔루션을 고수하고 싶습니다. 이것을 할 수있는 방법이 있습니까?내가 처리 할 수있는 것보다 더 빨리 파일에 나타나는 파일 (피 인용)

답변

2

뒤틀림은 inotify support입니다. 처리를 위해 콜백을 줄 수 있습니다. 너는 확실히 sleep ing이되고 싶지 않다. 프로세스 내에서 또는 다른 프로세스를 통해 처리할지 여부에 따라 수행중인 처리 유형에 따라 다르지만 이벤트를 잃어서는 안됩니다.

3

일반적으로 이벤트 감시자는 이벤트를보고 해당 이벤트를 풀에 전달하는 동안 처리를 처리하기 위해 여기에 스레드 풀을 구현합니다. 거친 예 :

(event happens) -> 
Watcher registers the event -> 
puts it into the thread pool queue -> 
thread pool processes the event 

감시자 따라서 크게 갱신 누락의 가능성을 줄이고, 대기 부분 이외의 최소 시간을 보낼 것입니다 그런 식으로.

1

Humungus가 지적 하듯이 스레드 풀이 좋은 옵션입니다. 그것은 응용 프로그램 특정 세부 조금 뒤범벅

https://github.com/timstaley/autocrunch

하지만 당신은 자신에 대한 대체 기능에 드롭 할 수 있어야한다 :

난 그냥, 나는 정확히이 문제에 대해 쓴 몇 가지 코드를 게시 한 필요합니다. 어떤 시점에서 줄여서 버전을 사용하는 블로그 글을 쓸 수도 있지만 지금은 시간이 없습니다. HTH!