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