Skip to content

Commit 75d2b3e

Browse files
Fixed issue when passing errback parameter
1 parent d8bce51 commit 75d2b3e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

scrapyrt/core.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ def __init__(self, spider_name, request_kwargs, max_requests=None, start_request
145145
# callback will be added after instantiation of crawler object
146146
# because we need to know if spider has method available
147147
self.callback_name = request_kwargs.pop('callback', None) or 'parse'
148+
149+
# do the same for errback
150+
self.errback_name = request_kwargs.pop('errback', None) or 'parse'
151+
148152
if request_kwargs.get("url"):
149153
self.request = self.create_spider_request(deepcopy(request_kwargs))
150154
else:
@@ -185,8 +189,8 @@ def spider_idle(self, spider):
185189
"""Handler of spider_idle signal.
186190
187191
Schedule request for url given to api, with optional callback
188-
that can be passed as GET parameter.
189-
192+
and errback that can be passed as GET parameter.
193+
190194
spider_idle signal is used because we want to optionally enable
191195
start_requests for the spider and if request is scheduled in
192196
spider_opened signal handler it's fired earlier then start_requests
@@ -197,6 +201,11 @@ def spider_idle(self, spider):
197201
callback = getattr(self.crawler.spider, self.callback_name)
198202
assert callable(callback), 'Invalid callback'
199203
self.request = self.request.replace(callback=callback)
204+
205+
errback = getattr(self.crawler.spider, self.errback_name)
206+
assert callable(errback), 'Invalid errback'
207+
self.request = self.request.replace(errback=errback)
208+
200209
modify_request = getattr(
201210
self.crawler.spider, "modify_realtime_request", None)
202211
if callable(modify_request):

0 commit comments

Comments
 (0)