@@ -17,7 +17,7 @@ def from_crawler(cls, crawler):
17
17
return cls (crawler )
18
18
19
19
def process_start_requests (self , start_requests , spider ):
20
- """Return start requests with some reordered by the manager.
20
+ """Return start requests, with some reordered by the manager.
21
21
22
22
The reordering occurs as a result of some requests waiting to gain
23
23
access to the webdriver instance. Those waiting requests are queued up
@@ -28,14 +28,18 @@ def process_start_requests(self, start_requests, spider):
28
28
return self ._process_requests (start_requests , start = True )
29
29
30
30
def process_spider_output (self , response , result , spider ):
31
- """Return spider result with some requests reordered by the manager.
31
+ """Return spider result, with some requests reordered by the manager.
32
32
33
33
See ``process_start_requests`` for a description of the reordering.
34
34
35
35
"""
36
36
for item_or_request in self ._process_requests (result ):
37
37
yield item_or_request
38
38
if isinstance (response .request , WebdriverRequest ):
39
+ # We are here because the current request holds the webdriver lock.
40
+ # That lock was kept for the entire duration of the response
41
+ # parsing callback to keep the webdriver instance intact, and we
42
+ # now release it.
39
43
self .manager .release (response .request .url )
40
44
next_request = self .manager .acquire_next ()
41
45
if next_request is not WebdriverRequest .WAITING :
0 commit comments