Playwright Worker Queues ನಲ್ಲಿ Routing Keys ಮತ್ತು Profile Leases ಅನ್ನು ಬಳಸುವುದು

TimeoutError: page.click failed ನಂತಹ Playwright ದೋಷವು (error) ಹೆಚ್ಚಾಗಿ ಸುಳ್ಳಾಗಿರುತ್ತದೆ.

ಆ ದೋಷವು ಸ್ಕ್ರಿಪ್ಟ್ ಏನನ್ನು ಕಂಡಿತು ಎಂಬುದನ್ನು ಮಾತ್ರ ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಆರಂಭದಲ್ಲೇ ಏಕೆ ತಪ್ಪು ಸ್ಥಳದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ಅದು ತಿಳಿಸುವುದಿಲ್ಲ.

ಒಂದೇ ಖಾತೆಗೆ (account) ಸಂಬಂಧಿಸಿದ ಕೆಲಸಗಳನ್ನು (jobs) ಎರಡು ವರ್ಕರ್ಸ್‌ಗಳು (workers) ತೆಗೆದುಕೊಳ್ಳುತ್ತಿರುವುದನ್ನು ನಾನು ಒಮ್ಮೆ ನೋಡಿದ್ದೇನೆ. ಎರಡೂ ವರ್ಕರ್ಸ್‌ಗಳು ಏಕಕಾಲದಲ್ಲಿ ಒಂದೇ ಬ್ರೌಸರ್ ಪ್ರೊಫೈಲ್ ಅನ್ನು ತೆರೆದಿದ್ದವು. ಒಂದು ವರ್ಕರ್ ನಿಧಾನಗತಿಯ ಪುಟಕ್ಕಾಗಿ ಕಾಯುತ್ತಿತ್ತು. ಇನ್ನೊಂದು ವರ್ಕರ್ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ (retry), ಸೆಷನ್ ಸ್ಟೇಟ್ ಅನ್ನು ಬದಲಾಯಿಸಿತು ಮತ್ತು ವಿಫಲತೆಗೆ ಕಾರಣವಾಯಿತು.

ಸಮಸ್ಯೆ ಕೋಡ್‌ನದ್ದಲ್ಲ. ಸಮಸ್ಯೆ ಕ್ಯೂ (queue) ನದ್ದಾಗಿತ್ತು.

ಹೆಚ್ಚಿನ ವರ್ಕರ್ ಕ್ಯೂಗಳು ಸ್ಟೇಟ್‌ಲೆಸ್ (stateless) ಕೆಲಸಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿವೆ.

  • ಒಂದು ಕೆಲಸವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ.
  • ಲಭ್ಯವಿರುವ ವರ್ಕರ್ ಅನ್ನು ಹುಡುಕಿ.
  • ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಿ.
  • ಅದನ್ನು ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಗುರುತಿಸಿ.

ಇದು ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳು ಅಥವಾ API ಕರೆಗಳಿಗೆ (calls) ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಆದರೆ ಬ್ರೌಸರ್ ಆಟೊಮೇಷನ್‌ಗೆ (browser automation) ಇದು ವಿಫಲವಾಗುತ್ತದೆ.

ಬ್ರೌಸರ್ ಪ್ರೊಫೈಲ್ ಸ್ಟೇಟ್‌ಲೆಸ್ ಅಲ್ಲ. ಅದು ಒಂದು ಖಾತೆ, ಒಂದು ಪ್ರೊಕ್ಸಿ ಮತ್ತು ಒಂದು ಸೆಷನ್ ಸ್ಟೇಟ್‌ಗೆ ಸೇರಿದ್ದಾಗಿದೆ. ಅತ್ಯಂತ ವೇಗದ ವರ್ಕರ್ ಯಾವಾಗಲೂ ಸರಿಯಾದ ವರ್ಕರ್ ಆಗಿರುವುದಿಲ್ಲ.

ಸುರಕ್ಷಿತವಾಗಿ ಸ್ಕೇಲ್ ಮಾಡಲು (scale), ನೀವು ನಿಮ್ಮ ತರ್ಕವನ್ನು (logic) ಬದಲಾಯಿಸಬೇಕು.

ಕೇಳುವ ಬದಲಿಗೆ: ಯಾವ ವರ್ಕರ್ ಲಭ್ಯವಿದೆ?

ಕೇಳಿ: ಈಗ ಯಾವ ಖಾತೆಯ ಪರಿಸರವನ್ನು (account environment) ಬಳಸುವುದು ಸುರಕ್ಷಿತ?

ನೀವು ಇದನ್ನು ಮೂರು ಪದರಗಳ ಮೂಲಕ ಪರಿಹರಿಸಬಹುದು:

  1. Routing Keys ಯಾವುದೇ ವರ್ಕರ್ ಯಾವುದೇ ಕೆಲಸವನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಬಿಡಬೇಡಿ. ಪ್ರೊಫೈಲ್ ID ಅಥವಾ ಖಾತೆ ID ಆಧಾರದ ಮೇಲೆ ರೂಟಿಂಗ್ ಕೀಯನ್ನು ಬಳಸಿ. ಇದು ಒಂದು ಸಮಯದಲ್ಲಿ ಕೇವಲ ಒಂದು ವರ್ಕರ್ ನಿರ್ದಿಷ್ಟ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಮಾತ್ರ ಬಳಸುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.

  2. Profile Leases ಕ್ಯೂ ಕ್ಲೈಮ್ (queue claim) ಎಂದರೆ ವರ್ಕರ್ ಒಂದು ಕೆಲಸದ ಮಾಲೀಕನಾಗಿದ್ದಾನೆ ಎಂದರ್ಥ. ಪ್ರೊಫೈಲ್ ಲೀಸ್ (profile lease) ಎಂದರೆ ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ ನಿರ್ದಿಷ್ಟ ಬ್ರೌಸರ್ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬಳಸಲು ವರ್ಕರ್ ಗೆ ಅನುಮತಿ ಇದೆ ಎಂದರ್ಥ. ಹಾರ್ಟ್‌ಬೀಟ್ (heartbeat) ಹೊಂದಿರುವ ಲೀಸ್ ಅನ್ನು ಬಳಸಿ. ಕಾರ್ಯವು ನಿರೀಕ್ಷಿತ ಸಮಯಕ್ಕಿಂತ ಹೆಚ್ಚು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿದ್ದರೆ, ವರ್ಕರ್ ಲೀಸ್ ಅನ್ನು ನವೀಕರಿಸಬೇಕು.

  3. Fencing Tokens ಹಳೆಯದಾದ (stale) ವರ್ಕರ್ಸ್‌ಗಳು ಅಪಾಯಕಾರಿ. ನೆಟ್‌ವರ್ಕ್ ವಿಳಂಬದಿಂದಾಗಿ (network lag) ವರ್ಕರ್ ತನ್ನ ಲೀಸ್ ಅನ್ನು ಕಳೆದುಕೊಂಡರೂ ಕೆಲಸ ಮುಂದುವರಿಸಿದರೆ, ಅದು ಡೇಟಾವನ್ನು ಬರೆಯಲು ಪ್ರಯತ್ನಿಸಬಹುದು. ಫೆನ್ಸಿಂಗ್ ಟೋಕನ್ (fencing token) ಬಳಸಿ. ಸ್ಟೋರೇಜ್ ಲೇಯರ್ ಹಳೆಯ ಟೋಕನ್‌ನಿಂದ ಬರುವ ಯಾವುದೇ ಬರವಣಿಗೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಬೇಕು.

ನೀವು ರೆಡಿನೆಸ್ ಗೇಟ್ (readiness gate) ಅನ್ನು ಸಹ ಸೇರಿಸಬೇಕು. ನೀವು Playwright ಅನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಇವುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ:

  • ಖಾತೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆಯೇ?
  • ಪ್ರೊಫೈಲ್‌ಗೆ ಮಾನವ ವಿಮರ್ಶೆಯ ಅಗತ್ಯವಿದೆಯೇ?
  • ಪ್ರೊಕ್ಸಿ ಪ್ರದೇಶವು ಕೆಲಸದ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ?

ತಡೆಹಿಡಿಯಲಾದ (blocked) ಕೆಲಸವು ಯಾವಾಗಲೂ ವಿಫಲವಾದ ಕೆಲಸವಲ್ಲ. ಅದು ಹೆಚ್ಚಾಗಿ ಸರಿಯಾದ ಸಂದರ್ಭಕ್ಕಾಗಿ (context) ಕಾಯುತ್ತಿರುವ ಕೆಲಸವಾಗಿರುತ್ತದೆ.

ಕೇವಲ ವೇಗಕ್ಕೆ ಆದ್ಯತೆ ನೀಡುವ ಕ್ಯೂಗಳನ್ನು ನಿರ್ಮಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಖಾತೆಯ ಸ್ಥಿತಿಗೆ (account state) ಆದ್ಯತೆ ನೀಡುವ ಕ್ಯೂಗಳನ್ನು ನಿರ್ಮಿಸಿ.

ಮೂಲ: https://dev.to/web4browser/using-routing-keys-and-profile-leases-in-playwright-worker-queues-a53