29
29
("X-Crawlera-Version" , "" ),
30
30
("X-Crawlera-Version" , "1.36.3-cd5e44" ),
31
31
("Zyte-Request-Id" , "123456789" ),
32
- ("zyte-error-type" , "foo" ),
33
32
)
34
33
35
34
@@ -160,7 +159,7 @@ def _assert_enabled(
160
159
)
161
160
assert mw .process_response (req , res , spider ) is res
162
161
assert res .headers ["X-Crawlera-Error" ] == b"banned"
163
- assert res .headers ["Zyte-Error" ] == b"banned"
162
+ assert res .headers ["Zyte-Error-Type " ] == b"banned"
164
163
165
164
# max bans reached and close_spider called
166
165
self .assertEqual (crawler .engine .fake_spider_closed_result , (spider , "banned" ))
@@ -482,7 +481,7 @@ def _test_stats(self, settings, prefix):
482
481
)
483
482
484
483
res = self ._mock_zyte_smartproxy_response (
485
- req .url , status = mw .ban_code , headers = {"Zyte-Error" : "somethingbad" }
484
+ req .url , status = mw .ban_code , headers = {"Zyte-Error-Type " : "somethingbad" }
486
485
)
487
486
assert mw .process_response (req , res , spider ) is res
488
487
self .assertEqual (crawler .stats .get_value ("{}/response" .format (prefix )), 2 )
@@ -497,7 +496,7 @@ def _test_stats(self, settings, prefix):
497
496
crawler .stats .get_value ("{}/response/error/somethingbad" .format (prefix )), 1
498
497
)
499
498
self .assertEqual (res .headers ["X-Crawlera-Error" ], b"somethingbad" )
500
- self .assertEqual (res .headers ["Zyte-Error" ], b"somethingbad" )
499
+ self .assertEqual (res .headers ["Zyte-Error-Type " ], b"somethingbad" )
501
500
502
501
res = self ._mock_zyte_smartproxy_response (
503
502
req .url ,
@@ -516,7 +515,7 @@ def _test_stats(self, settings, prefix):
516
515
crawler .stats .get_value ("{}/response/banned" .format (prefix )), 1
517
516
)
518
517
self .assertEqual (res .headers ["X-Crawlera-Error" ], b"banned" )
519
- self .assertEqual (res .headers ["Zyte-Error" ], b"banned" )
518
+ self .assertEqual (res .headers ["Zyte-Error-Type " ], b"banned" )
520
519
521
520
res = self ._mock_zyte_smartproxy_response (
522
521
req .url ,
@@ -672,7 +671,10 @@ def test_is_banned(self):
672
671
res = Response (
673
672
req .url ,
674
673
status = 503 ,
675
- headers = {"Zyte-Error" : "/limits/over-global-limit" },
674
+ headers = {
675
+ "Zyte-Request-Id" : "123456789" ,
676
+ "Zyte-Error-Type" : "/limits/over-global-limit" ,
677
+ },
676
678
)
677
679
res = mw .process_response (req , res , self .spider )
678
680
self .assertFalse (mw ._is_banned (res ))
@@ -681,16 +683,26 @@ def test_is_banned(self):
681
683
res = mw .process_response (req , res , self .spider )
682
684
self .assertTrue (mw ._is_banned (res ))
683
685
res = Response (
684
- req .url , status = 520 , headers = {"Zyte-Error" : "/download/temporary-error" }
686
+ req .url ,
687
+ status = 520 ,
688
+ headers = {
689
+ "Zyte-Request-Id" : "123456789" ,
690
+ "Zyte-Error-Type" : "/download/temporary-error" ,
691
+ },
685
692
)
686
693
res = mw .process_response (req , res , self .spider )
694
+ assert mw .crawler .stats .get_value ("zyte_smartproxy/response/banned" ) == 1
687
695
self .assertTrue (mw ._is_banned (res ))
688
696
res = Response (
689
697
req .url ,
690
698
status = 521 ,
691
- headers = {"Zyte-Error" : "/download/internal-error" },
699
+ headers = {
700
+ "Zyte-Request-Id" : "123456789" ,
701
+ "Zyte-Error-Type" : "/download/internal-error" ,
702
+ },
692
703
)
693
704
res = mw .process_response (req , res , self .spider )
705
+ assert mw .crawler .stats .get_value ("zyte_smartproxy/response/banned" ) == 2
694
706
self .assertTrue (mw ._is_banned (res ))
695
707
696
708
@patch ("random.uniform" )
@@ -733,23 +745,23 @@ def test_noslaves_delays(self, random_uniform_patch):
733
745
over_use_limit_response = self ._mock_zyte_smartproxy_response (
734
746
ban_url ,
735
747
status = 429 ,
736
- headers = {"Zyte-Error" : "/limits/over-user-limit" },
748
+ headers = {"Zyte-Error-Type " : "/limits/over-user-limit" },
737
749
)
738
750
mw .process_response (noslaves_req , over_use_limit_response , self .spider )
739
751
self .assertEqual (slot .delay , backoff_step * 2 ** 1 )
740
752
741
753
over_domain_limit_response = self ._mock_zyte_smartproxy_response (
742
754
ban_url ,
743
755
status = 429 ,
744
- headers = {"Zyte-Error" : "/limits/over-domain-limit" },
756
+ headers = {"Zyte-Error-Type " : "/limits/over-domain-limit" },
745
757
)
746
758
mw .process_response (noslaves_req , over_domain_limit_response , self .spider )
747
759
self .assertEqual (slot .delay , backoff_step * 2 ** 2 )
748
760
749
761
over_global_limit_response = self ._mock_zyte_smartproxy_response (
750
762
ban_url ,
751
763
status = 503 ,
752
- headers = {"Zyte-Error" : "/limits/over-global-limit" },
764
+ headers = {"Zyte-Error-Type " : "/limits/over-global-limit" },
753
765
)
754
766
mw .process_response (noslaves_req , over_global_limit_response , self .spider )
755
767
self .assertEqual (slot .delay , max_delay )
0 commit comments