@@ -81,6 +81,7 @@ def __init__(self, settings):
81
81
self .settings = settings
82
82
self .crawlers = {}
83
83
self .stopping = False
84
+ self ._started = None
84
85
85
86
def create_crawler (self , name = None ):
86
87
if name not in self .crawlers :
@@ -95,8 +96,8 @@ def start(self):
95
96
@defer .inlineCallbacks
96
97
def stop (self ):
97
98
self .stopping = True
98
- for crawler in self .crawlers . itervalues () :
99
- yield crawler .stop ()
99
+ if self ._active_crawler :
100
+ yield self . _active_crawler .stop ()
100
101
101
102
def _signal_shutdown (self , signum , _ ):
102
103
install_shutdown_handlers (self ._signal_kill )
@@ -130,20 +131,20 @@ def start_reactor(self):
130
131
reactor .run (installSignalHandlers = False ) # blocking call
131
132
132
133
def _start_crawler (self ):
133
- if self .crawlers and not self .stopping :
134
- name , crawler = self .crawlers .popitem ()
135
-
136
- sflo = log .start_from_crawler (crawler )
137
- crawler .configure ()
138
- crawler .install ()
139
- crawler .signals .connect (crawler .uninstall , signals .engine_stopped )
140
- if sflo :
141
- crawler .signals .connect (sflo .stop , signals .engine_stopped )
142
-
143
- crawler .signals .connect (self ._check_done , signals .engine_stopped )
144
- crawler .start ()
134
+ if not self .crawlers or self .stopping :
135
+ return
145
136
146
- return name , crawler
137
+ name , crawler = self .crawlers .popitem ()
138
+ self ._active_crawler = crawler
139
+ sflo = log .start_from_crawler (crawler )
140
+ crawler .configure ()
141
+ crawler .install ()
142
+ crawler .signals .connect (crawler .uninstall , signals .engine_stopped )
143
+ if sflo :
144
+ crawler .signals .connect (sflo .stop , signals .engine_stopped )
145
+ crawler .signals .connect (self ._check_done , signals .engine_stopped )
146
+ crawler .start ()
147
+ return name , crawler
147
148
148
149
def _check_done (self , ** kwargs ):
149
150
if not self ._start_crawler ():
0 commit comments