Python ನಲ್ಲಿ itertools.cycle ಬಳಸಿ round-robin ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆ
ಸ್ಥಿರ ಪೂಲ್ನಿಂದ ಮುನ್ಸೂಚಿಸಬಹುದಾದ ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಾಗಿ ಪುನರಾವರ್ತಿತ ಪುನರಾವರ್ತಕವನ್ನು ಬಳಸಿ, ಆಯ್ಕೆಯನ್ನು ವಿನಂತಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಮತ್ತು ಆರೋಗ್ಯದಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ.
ಸ್ಥಿರ ಪೂಲ್ಗಾಗಿ round-robin ಆಯ್ಕೆಯು ಆಹ್ಲಾದಕರವಾಗಿ ಚಿಕ್ಕದಾಗಿರಬಹುದು:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
ಮಾದರಿ URL ಗಳನ್ನು ನಿಮ್ಮ ಸೇವೆ ಅಥವಾ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿಯಿಂದ HTTP ಎಂಡ್ಪಾಯಿಂಟ್ಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಿ. ಸತತ ಕರೆಗಳು A, B, C ಮತ್ತು ನಂತರ ಮತ್ತೆ A ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. ಮುಂದಿನ ವಿನಂತಿಯನ್ನು ಸಂರಚಿಸುವಾಗ ಆಯ್ಕೆ ಮಾಡಿದ ಮೌಲ್ಯವನ್ನು ಬಳಸಿ. ಪ್ರತಿ ವಿನಂತಿಗೂ ಪುನರಾವರ್ತಕವನ್ನು ಮತ್ತೆ ರಚಿಸುವುದು ಅನುಕ್ರಮವನ್ನು ಮರುಪ್ರಾರಂಭಿಸುತ್ತದೆ. Requests ಗಾಗಿ, ಆಯ್ಕೆ ಮಾಡಿದ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ವಿನಂತಿಗೆ ರವಾನಿಸಿ.
ನೀವು ಪಟ್ಟಿಯನ್ನು ಇಷ್ಟಪಟ್ಟರೆ, ಅದರ ಮೊದಲ ಅಂಶವನ್ನು ಕೊನೆಗೆ ಸರಿಸಿ. pool.append(pool.pop()) ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದು ಅದನ್ನು ತಕ್ಷಣ ಹಿಂತಿರುಗಿಸುತ್ತದೆ; ಮೊದಲ ಅಂಶ ಎಂದಿಗೂ ಬದಲಾಗುವುದಿಲ್ಲ. ಕ್ಯೂ ಕಾರ್ಯಾಚರಣೆ pool.append(pool.pop(0)), ಆದರೂ ಮುಂಭಾಗದಿಂದ ತೆಗೆದರೆ ಉಳಿದ ಪಟ್ಟಿ ಅಂಶಗಳು ಸರಿಯುತ್ತವೆ.
ಪುನರಾವರ್ತಕಕ್ಕೆ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಸಾಧಾರಣ ಕೆಲಸವಿದೆ. ಅದು ಲಭ್ಯತೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದಿಲ್ಲ, ವಿಫಲ ನಮೂದುಗಳನ್ನು ತೆಗೆಯುವುದಿಲ್ಲ ಅಥವಾ ಬೇರೆ ಸಾರ್ವಜನಿಕ ನಿರ್ಗಮನವನ್ನು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ. ಹಲವು ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ಒಂದೇ ಹೊರಗಿನ ವಿಳಾಸವನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದು.
ಮರುಪ್ರಯತ್ನ ನೀತಿ ಮತ್ತು ಪೂಲ್ ನವೀಕರಣಗಳನ್ನು ಈ ಸಣ್ಣ ಆಯ್ಕೆಕಾರನಿಂದ ಹೊರಗೆ ಇರಿಸಿ. ಹಂಚಿಕೊಂಡ ಪುನರಾವರ್ತಕಕ್ಕೆ ಸಮಕಾಲೀನ ಕೋಡ್ನಲ್ಲಿ ಉದ್ದೇಶಪೂರ್ವಕ ಮಾಲೀಕತ್ವ ಮಾದರಿ ಕೂಡ ಬೇಕು, ಇದರಿಂದ ಆಯ್ಕೆ ಮಾಡಿದ ಎಂಡ್ಪಾಯಿಂಟ್ ಅದನ್ನು ಸ್ವೀಕರಿಸಿದ ಕಾರ್ಯಾಚರಣೆಗೆ ಲಗತ್ತಾಗಿರುತ್ತದೆ.