@@ -39,6 +39,9 @@ def crawl(self, *args, **kwargs):
3939 self .crawling = True
4040 try :
4141 self .spider = self ._create_spider (* args , ** kwargs )
42+ if hasattr (self , "_apply_settings" ):
43+ self ._apply_settings ()
44+ self ._update_root_log_handler ()
4245 self .engine = self ._create_engine ()
4346 if self .start_requests :
4447 start_requests = iter (self .spider .start_requests ())
@@ -112,6 +115,7 @@ def __init__(self, spider_name, request_kwargs,
112115 self .debug = app_settings .DEBUG
113116 self .crawler_process = None
114117 self .crawler = None
118+ self .crawl_start_time = datetime .datetime .utcnow ()
115119 # callback will be added after instantiation of crawler object
116120 # because we need to know if spider has method available
117121 self .callback_name = request_kwargs .pop ('callback' , None ) or 'parse'
@@ -195,9 +199,8 @@ def handle_scheduling(self, request, spider):
195199
196200 def limit_runtime (self , spider ):
197201 """Stop crawl if it takes too long."""
198- start_time = self .crawler .stats .get_value ("start_time" )
199202 time_now = datetime .datetime .utcnow ()
200- if (time_now - start_time ).seconds >= self .timeout_limit :
203+ if (time_now - self . crawl_start_time ).seconds >= self .timeout_limit :
201204 spider .crawler .engine .close_spider (spider , reason = "timeout" )
202205
203206 def limit_requests (self , spider ):
0 commit comments