ਤਿੰਨ API ਲਈ ਤਿੰਨ ਸਲੀਪ ਇੰਟਰਵਲ (Sleep Intervals)

ਮੈਂ ਅਪ੍ਰੈਲ ਵਿੱਚ ਤਿੰਨ ਡਾਇਰੈਕਟਰੀ ਸਾਈਟਾਂ ਲਈ ETL ਪਾਈਪਲਾਈਨਾਂ ਬਣਾਈਆਂ। ਹਰੇਕ ਸਾਈਟ ਇੱਕ ਵੱਖਰੀ API ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ: Steam, GitHub, ਅਤੇ HuggingFace।

ਮੈਨੂੰ ਹਰੇਕ ਲਈ ਸਲੀਪ ਇੰਟਰਵਲ ਸੈੱਟ ਕਰਨੇ ਪਏ। ਅੰਕ, ਫੇਲ੍ਹ ਹੋਣ ਦੇ ਤਰੀਕੇ (failure modes), ਅਤੇ ਐਰਰ ਹੈਂਡਲਿੰਗ (error handling) ਸਭ ਵੱਖਰੇ ਹਨ। ਇੱਥੇ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿ ਮੈਂ ਕੀ ਵਰਤਦਾ ਹਾਂ ਅਤੇ ਕਿਉਂ।

Steam: 250ms ਸਲੀਪ

Steam ਦੀ ਡਾਕੂਮੈਂਟੇਸ਼ਨ ਰੇਟ ਲਿਮਿਟਸ (rate limits) ਬਾਰੇ ਅਸਪਸ਼ਟ ਹੈ। ਕਮਿਊਨਿਟੀ ਡੇਟਾ ਅਨੁਸਾਰ ਪ੍ਰਤੀ IP ਹਰ 5 ਮਿੰਟਾਂ ਵਿੱਚ ਲਗਭਗ 200 ਰਿਕੁਐਸਟਾਂ ਮਿਲਦੀਆਂ ਹਨ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ 1.5 ਸੈਕਿੰਡ ਦਾ ਇੰਟਰਵਲ ਸੁਰੱਖਿਅਤ ਹੈ।

ਮੈਂ ਇਸਦੀ ਬਜਾਏ 250ms ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ। ਮੇਰਾ ਰਾਤ ਦਾ ਜੌਬ (nightly job) ਸਿਰਫ਼ 60 ਗੇਮ ਐਂਟਰੀਆਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਦਾ ਹੈ। 250ms 'ਤੇ, ਕੁੱਲ ਸਲੀਪ ਸਮਾਂ 15 ਸੈਕਿੰਡ ਹੈ। 1.5 ਸੈਕਿੰਡ 'ਤੇ, ਇਹ 90 ਸੈਕਿੰਡ ਹੋ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਕਈ ਸਾਈਟਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹੋ, ਤਾਂ ਸਮੇਂ ਦੀ ਬਚਤ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦੀ ਹੈ।

ਜੇਕਰ Steam ਕੋਈ ਐਰਰ (error) ਵਾਪਸ ਕਰਦਾ ਹੈ, ਤਾਂ ਜੌਬ ਨਹੀਂ ਰੁਕਦੀ। ਇਹ ਐਰਰ ਨੂੰ ਲੌਗ (log) ਕਰਦੀ ਹੈ ਅਤੇ ਅਗਲੀ ਆਈਟਮ 'ਤੇ ਚਲੀ ਜਾਂਦੀ ਹੈ। ਡੇਟਾ ਅਗਲੀ ਰਾਤ ਅਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

GitHub: 100ms ਸਲੀਪ

GitHub ਬਹੁਤ ਸਪਸ਼ਟ ਹੈ। ਬਿਨਾਂ ਪ੍ਰਮਾਣਿਕਤਾ (unauthenticated) ਵਾਲੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਪ੍ਰਤੀ ਘੰਟਾ 60 ਰਿਕੁਐਸਟਾਂ ਮਿਲਦੀਆਂ ਹਨ। ਟੋਕਨ ਵਾਲੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਪ੍ਰਤੀ ਘੰਟਾ 5,000 ਰਿਕੁਐਸਟਾਂ ਮਿਲਦੀਆਂ ਹਨ।

ਮੈਂ ਸਲੀਕਤਾ ਦੇ ਉਪਾਅ ਵਜੋਂ 100ms ਸਲੀਪ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ। ਰੇਟ ਲਿਮਿਟ ਲਈ ਟੋਕਨ ਮੁੱਖ ਕੰਮ ਕਰਦਾ ਹੈ। ਮੇਰੀ ਪਾਈਪਲਾਈਨ ਕੋਰ REST API ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ, ਨਾ ਕਿ search API ਦੀ। ਇਹ ਬਹੁਤ ਉੱਚੀਆਂ ਲਿਮਿਟਾਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

HuggingFace: ਕੋਈ ਸਲੀਪ ਨਹੀਂ

ਮੈਂ ਹਫ਼ਤਿਆਂ ਦੇ ਰਾਤ ਦੇ ਰਨਾਂ (nightly runs) ਵਿੱਚ ਰੇਟ ਲਿਮਿਟ ਨੂੰ ਨਹੀਂ ਛੂਹਿਆ ਹੈ। ਰਜਿਸਟਰੀ API ਮੇਰੇ ਵਰਗੇ ਬੈਚ ਟੂਲਜ਼ (batch tools) ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ।

ਮੈਂ ਇੱਕ ਵਾਰ ਵਿੱਚ 100 ਮਾਡਲਾਂ ਤੱਕ ਫੈਚ (fetch) ਕਰਦਾ ਹਾਂ। ਮੈਂ ਲਿਮਿਟਾਂ ਨੂੰ ਹੋਰ ਵਧਾਉਣ ਲਈ ਇੱਕ ਆਥੈਂਟੀਕੇਸ਼ਨ ਟੋਕਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ। 100 ਮਾਡਲਾਂ ਲਈ, ਕੋਈ ਸਲੀਪ ਨਾ ਹੋਣਾ ਸਭ ਤੋਂ ਸਰਲ ਹੱਲ ਹੈ।

ਸਾਰਾਂਸ਼ ਟੇਬਲ (Summary Table):

• Steam: 250ms ਸਲੀਪ। ਗੈਰ-ਮਾਰੂ (Non-fatal) ਐਰਰ। • GitHub: 100ms ਸਲੀਪ। ਗੈਰ-ਮਾਰੂ (Non-fatal) ਐਰਰ। • HuggingFace: ਕੋਈ ਸਲੀਪ ਨਹੀਂ। ਗੈਰ-ਮਾਰੂ (Non-fatal) ਐਰਰ।

ਸਲੀਪ ਇੰਟਰਵਲ ਇੱਕ ਅੰਦਾਜ਼ਾ ਹੈ। ਅਸਲ ਸੁਰੱਖਿਆ ਇਹ ਹੈ ਕਿ ਮੈਂ ਐਰਰਾਂ ਨੂੰ ਕਿਵੇਂ ਹੈਂਡਲ ਕਰਦਾ ਹਾਂ। ਹਰ API ਕਾਲ ਇੱਕ try/catch ਬਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। ਜੇਕਰ ਕੋਈ ਕਾਲ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਕ੍ਰੈਸ਼ ਹੋਣ ਦੀ ਬਜਾਏ ਇੱਕ ਫਾਲਬੈਕ ਰੋਅ (fallback row) ਲਿਖਦਾ ਹੈ।

ਸਲੀਪ ਇੰਟਰਵਲ ਇਹ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿੰਨੀ ਵਾਰ ਲਿਮਿਟ ਤੱਕ ਪਹੁੰਚਦੇ ਹੋ। ਐਰਰ ਹੈਂਡਲਿੰਗ ਇਹ ਕੰਟਰੋਲ ਕਰਦੀ ਹੈ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਪਹੁੰਚਦੇ ਹੋ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ।

ਸਰੋਤ (Source): https://dev.to/morinaga/three-sleep-intervals-for-three-apis-steam-250ms-github-100ms-huggingface-none-4ga7

ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ (Optional learning community): https://t.me/GyaanSetuAi