ପ୍ରକ୍ସି ମାଧ୍ୟମରେ Scrapy AutoThrottle: ସ୍ଲଟ୍ ଏବଂ ବିଳମ୍ବ
ଲକ୍ଷ୍ୟ ସାଇଟର ଡାଉନଲୋଡ୍ ସ୍ଲଟ୍କୁ ପ୍ରକ୍ସି ମାର୍ଗରୁ ଅଲଗା ରଖନ୍ତୁ ଏବଂ ବିଳମ୍ବକୁ ପର୍ଯ୍ୟବେକ୍ଷିତ ଅନୁରୋଧ ପଥ ଭାବରେ ବ୍ୟାଖ୍ୟା କରନ୍ତୁ।
ଡିଫଲ୍ଟ ଭାବରେ Scrapy ଅନୁରୋଧ URLର ଡୋମେନ୍ ରୁ ଡାଉନଲୋଡ୍ ସ୍ଲଟ୍ ନିର୍ଦ୍ଧାରଣ କରେ। ଏକ ଅନୁରୋଧକୁ HTTP ପ୍ରକ୍ସି ଦେଲେ ସେହି URL ପ୍ରକ୍ସିର ହୋଷ୍ଟନାମ ହୋଇଯାଏ ନାହିଁ। ତେଣୁ ବିଭିନ୍ନ ସାଇଟକୁ ଯାଉଥିବା ଅନୁରୋଧଗୁଡ଼ିକ ଏକ ମଧ୍ୟସ୍ଥ ଅଂଶୀଦାର କରି ମଧ୍ୟ ଅଲଗା ଅଲଗା ସ୍ଲଟ୍ ରଖିପାରେ।
AutoThrottle ପର୍ଯ୍ୟବେକ୍ଷିତ ଡାଉନଲୋଡ୍ ବିଳମ୍ବ ବ୍ୟବହାର କରି ପ୍ରତ୍ୟେକ ସ୍ଲଟର ବିଳମ୍ବ ସମନ୍ୱୟ କରେ। ମାନକ ପ୍ରତି-ଡୋମେନ୍ ସମବର୍ତ୍ତୀ ସୀମା ଏବଂ ସର୍ବନିମ୍ନ ଡାଉନଲୋଡ୍ ବିଳମ୍ବ ଏବେ ମଧ୍ୟ ଲାଗୁ ଅଛି।
ଆଲଗୋରିଦମ ବଦଳାଇବା ପୂର୍ବରୁ ଗ୍ରୁପିଂ ଯାଞ୍ଚ କରନ୍ତୁ
ଏକ କଷ୍ଟମ ମିଡଲୱେର୍ request.meta["download_slot"] ନିର୍ଦ୍ଧାରଣ କରି ସାଧାରଣ ସ୍ଲଟ୍ ଚୟନକୁ ଅତିକ୍ରମ କରିପାରେ। କେତେକ ପ୍ରକ୍ସି ଏକ୍ସଟେନସନ୍ ସେମାନଙ୍କର ନିଜସ୍ୱ ଗ୍ରୁପିଂ ବ୍ୟବହାର କରନ୍ତି। ଅସମ୍ପର୍କିତ ସାଇଟଗୁଡ଼ିକ ଏକ ସୀମିତକର୍ତ୍ତା ଅଂଶୀଦାର କରୁଥିବା ପରି ଦେଖାଗଲେ ସେହି ସେଟିଂଗୁଡ଼ିକ ଯାଞ୍ଚ କରନ୍ତୁ।
ଏହାର ବିପରୀତରେ, ପ୍ରତ୍ୟେକ ପ୍ରକ୍ସି ପାଇଁ ଅଲଗା ସ୍ଲଟ୍ ନିର୍ଦ୍ଧାରଣ କଲେ ଏକାଧିକ ପ୍ରକ୍ସି ଏକ ସମୟରେ ଏକ ସ୍ଥାନକୁ ଯୋଗାଯୋଗ କରିପାରେ। ଏହା କ୍ରଲର୍ ମାନିବାକୁ ଥିବା ସାଇଟ୍-ବ୍ୟାପୀ ସୀମାକୁ ଭାଙ୍ଗିପାରେ। ସୁରକ୍ଷିତ ସମ୍ବଳ ଅନୁସାରେ ସ୍ଲଟ୍ କି ବାଛନ୍ତୁ।
ବିଳମ୍ବରେ ଆପଣ ବ୍ୟବହାର କରିଥିବା ପଥ ଅନ୍ତର୍ଭୁକ୍ତ
Scrapy ଅନୁରୋଧ ପଠାଇବାଠାରୁ HTTP ହେଡର୍ ପାଇବା ପର୍ଯ୍ୟନ୍ତ ବିଳମ୍ବ ମାପେ। ପ୍ରକ୍ସି ଦେଇ ଯାଉଥିବା ଅନୁରୋଧ ସେହି ପର୍ଯ୍ୟବେକ୍ଷଣରେ ମଧ୍ୟସ୍ଥର ଧାଡ଼ି ଓ ଫରୱାର୍ଡିଂ ବିଳମ୍ବ ଅନ୍ତର୍ଭୁକ୍ତ କରିପାରେ। AutoThrottle କେବଳ ଉତ୍ସ ପାଇଁ ପୃଥକ ପ୍ରକ୍ରିୟାକରଣ ସମୟ ପାଏ ନାହିଁ।
ସମବର୍ତ୍ତୀତା ବଢ଼ାଇଲେ ସେହି ମାପ ସାଇଟକୁ ଅଲଗା କରିପାରିବ ନାହିଁ। ଉଭୟ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ହେଲେ ଲକ୍ଷ୍ୟ ପ୍ରତି ଶିଷ୍ଟାଚାର ଏବଂ ପ୍ରକ୍ସି କ୍ଷମତାକୁ ଅଲଗା ସୀମା ଭାବରେ ରଖନ୍ତୁ। ଅଂଶୀଦାର ପ୍ରକ୍ସିକୁ ଲକ୍ଷ୍ୟ ସ୍ଲଟ ମଧ୍ୟରେ ଅତିରିକ୍ତ ସମବର୍ତ୍ତୀ ବଜେଟ ଆବଶ୍ୟକ ହୋଇପାରେ, ଯେତେବେଳେ ପ୍ରତ୍ୟେକ ଲକ୍ଷ୍ୟ ନିଜର ହାର ନୀତି ରଖେ।