2014-08-31 4 views
1

을 ReactorAlreadyRunning 및 미리보기를 시도에 파이썬 결과에서 주기적으로 Scrapy 실행, I에 유래에서 발견, 나는 마지막으로 정기적으로 scrapy를 실행하는 관리 ReactorAlreadyRunning 두 번째 실행 후. 어떻게 해결할 수 있습니까?땜질 몇 시간 후

+0

['scrapyd'] (http://scrapyd.readthedocs.org/en/latest/) 서비스를 사용하지 않는 이유는 무엇입니까? – alecxe

+0

호스트 된 환경에서 자체 프로세스를 실행할 수 없습니다. – WhatIsName

답변

2

프로그램이 두 곳에서 reactor.run을 호출하고 그 중 하나가 루프로 효과적으로 호출된다는 점에 유의하십시오 (이는 간접적으로 LoopingCall에 의해 호출되기 때문에).

트위스트 반응기는 재시작 할 수 없습니다. 한 번 실행하고 중지 할 수 있습니다. 다시 실행하려고하면 예외가 발생합니다. 실행 중일 때 실행하려고하면 다른 예외 (ReactorAlreadyRunning)가 나타납니다.

여기의 해결책은 반응기를 1 회만 가동하는 것입니다. 따라서 원자로를 한 번만 중지해야합니다.

적어도 프로그램의 한 곳에서 reactor.run으로 전화해야한다는 의미입니다. 나는 처음부터 프로그램의 맨 마지막에있는 호출이 유지하기를 원하고 run 메쏘드 (이것은 거미를 실행할 때마다 한 번 호출 됨) 내의 호출을 제거해야한다고 제안합니다.

거미가 끝났을 때 반응기를 멈추지 않아야합니다. reactor.stopspider_done에 연결하면 거미가 처음 실행 된 후 반응기가 멈추고 거미를 다시 돌릴 수 없게됩니다. 나는 당신이 당신의 프로그램의이 부분을 단순히 삭제할 수 있다고 생각한다.

+0

사실 나는 이미 프로그램을 제거하여 문제를 해결했습니다. 예, reactor.run()을 한 번만 호출하는 것을 피하는 것까지로 끝납니다. – WhatIsName

+0

"reactor.run()을 한 번만 호출하는 것을 피하십시오". :) –

관련 문제