5 개의 웹 사이트를 동시에 스레드를 사용하여 크롤링하는 기본 크롤러를 연구 중입니다. 각 사이트마다 새 스레드를 만듭니다. 쉘에서 프로그램을 실행하면 출력 로그에 모든 5 개의 스레드가 예상대로 실행됨을 나타냅니다. 그러나이 프로그램을 supervisord 프로그램으로 실행하면 로그에 매 2 개의 스레드 만 실행됩니다. 로그는 모든 5 개의 스레드가 시작되었지만 동일한 두 개만 실행 중이며 나머지는 멈추어 있음을 나타냅니다. 이 불일치가 쉘에서 실행될 때와 감독자에서 실행될 때 왜 이러한 불일치가 발생하는지 이해할 수 없습니다. 내가 고려하지 않은 것이 있습니까?슈퍼 바이저에서 실행중인 스레드가 없습니다
for sid in entries:
url = entries[sid]
threading.Thread(target=self.crawl_loop, \
args=(sid, url)).start()
UPDATES : 여기
는 스레드 생성하는 코드 코멘트에 tdelaney에 의해 제안 을, 나는 supervisord 구성에서 작업 디렉토리를 변경하고 지금은 모든 스레드가 실행되고있다 예상대로 크롤러 파일 디렉토리에 작업 디렉토리를 설정하면 문제가 해결되는 이유가 아직도 이해가되지 않습니다. 아마도 관리자가 프로세스를 관리하는 방법을 알고있는 사람이 설명 할 수 있습니까?
항목은 어디에서 왔으며 로그는 어디로 이동합니까? supervisord를 사용할 때 다른 사용자 이름과 현재 작업 디렉토리가 있으며 생각보다 다른 파일을 사용할 가능성이 있습니다. – tdelaney