ਲਚਕੀਲੇ ਬੰਸਸਟਲਕ 'ਤੇ ਫਾਸਟੈਪੀਆਈ ਵਿਚ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨਾਲ ਨਜਿੱਠਣਾ
AWS ਲਚਕੀਲੇ ਬੰਸਸਟਾਲਕ 'ਤੇ ਫਾਸਟਪੀਸੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਤਾਇਨਾਤ ਕਰਨਾ ਇਕ ਨਿਰਵਿਘਨ ਤਜਰਬਾ ਹੋ ਸਕਦਾ ਹੈ - ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ 502 ਮਾੜੀ ਗੇਟਵੇ ਗਲਤੀ ਵਰਗੇ ਮਸਲਿਆਂ ਵਿੱਚ ਨਹੀਂ ਜਾਂਦੇ. ਇਕ ਆਮ ਦਰਦ ਬਿੰਦੂ ਡਿਵੈਲਪਰ ਦਾ ਸਾਹਮਣਾ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲ ਰਿਹਾ ਹੈ, ਜੋ ਗੇਟਵੇ ਟਾਈਮਆ .ਟ ਨੂੰ ਟਰਿੱਗਰ ਕਰ ਸਕਦਾ ਹੈ. 🚀
ਇਸ ਦੀ ਕਲਪਨਾ ਕਰੋ: ਤੁਹਾਡੇ ਕੋਲ ਏਪੀਆਈ ਦਾ ਅੰਤ ਹੈ ਜੋ ਕਿ ਪਿਛੋਕੜ ਵਿੱਚ ਇੱਕ ਪੀਡੀਐਫ ਫਾਈਲ ਤਿਆਰ ਕਰਦਾ ਹੈ, 30 ਸਕਿੰਟ ਲੈਂਦਾ ਹੈ. ਸਥਾਨਕ ਤੌਰ 'ਤੇ, ਸਭ ਕੁਝ ਬਿਲਕੁਲ ਕੰਮ ਕਰਦਾ ਹੈ. ਪਰ ਇਕ ਵਾਰ ਲਚਕੀਲੇ ਬਾਨਸਟਲਕ 'ਤੇ ਤਾਇਨਾਤ, ਏਪੀਆਈ ਕਾਲ 502 ਗਲਤੀ ਨੂੰ ਨਿਰਾਸ਼ਾਜਨਕ ਨਾਲ ਅਸਫਲ ਹੋ ਜਾਂਦੀ ਹੈ. ਤੁਸੀਂ ਐਨਜੀਐਨਐਕਸ ਅਤੇ ਗੁੰਡਾਗਰਦੀ ਟਾਈਮਆ outs ਟ ਨੂੰ ਐਡਜਸਟ ਕੀਤਾ ਹੈ, ਪਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ.
ਇਹ ਇਕ ਕਲਾਸਿਕ ਦ੍ਰਿਸ਼ ਹੈ ਜਿੱਥੇ ਬੁਨਿਆਦੀ and ਾਂਚਾ ਸੈਟਿੰਗਾਂ ਅਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਹੈਂਡਲਿੰਗ ਟਕਰਾਉਂਦੇ ਹਨ. AWS ਲਚਕੀਲੇ ਬੰਸਸਟਾਲਕ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਪੂਰਾ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਬੇਨਤੀਆਂ ਨੂੰ ਖਤਮ ਕਰ ਰਿਹਾ ਹੋਵੇ. ਇਹ ਸਮਝਣਾ ਕਿ ਅਜਿਹਾ ਕਿਉਂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਸ ਵਿਚ ਕੰਮ ਕਿਵੇਂ ਕਰਨਾ ਹੈ, ਇਹ ਇਕ ਨਿਰਵਿਘਨ ਤਾਇਨਾਤੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇਸ ਨੂੰ ਸਹੀ ਹੈ.
ਇਸ ਲੇਖ ਵਿਚ, ਅਸੀਂ ਪੜਚਾਂਗੇ ਕਿ ਫਾਸਪੀਟੀ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਇਸ ਲਈ 502 ਗਲਤੀਆਂ ਹਨ ਭਾਵੇਂ ਤੁਸੀਂ ਪੀਡੀਐਫ ਪੀੜ੍ਹੀ, ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ, ਜਾਂ ਕਿਸੇ ਵੀ ਲੰਬੇ ਚੱਲਦੇ ਕੰਮ ਨਾਲ ਨਜਿੱਠ ਰਹੇ ਹੋ, ਇਹ ਸੂਖਮ ਤੁਹਾਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਸਮੱਸਿਆ ਨਾਲ ਨਜਿੱਠਣ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਨਗੇ. ⚡
ਕਮਾਂਡ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਣ |
---|---|
background_tasks.add_task() | ਫਾਸਪੀ ਦੇ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਕਤਾਰ ਵਿੱਚ ਇੱਕ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਕਾਰਜਾਂ ਨੂੰ ਮੁੱਖ ਬੇਨਤੀ-ਜਵਾਬ ਚੱਕਰ ਨੂੰ ਰੋਕਣ ਤੋਂ ਬਿਨਾਂ ਲਾਗੂ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ. |
celery.task | ਐੱਸ ਡੀਫ ਜਨਰੇਸ਼ਨ ਜਿਵੇਂ ਕਿ ਪੀਡੀਐਫ ਪੀੜ੍ਹੀ ਨੂੰ ਏਪੀਆਈ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਦੇ ਬਿਨਾਂ ਦਖਲ ਦੇਣ ਨੂੰ ਸਮਰੱਥ ਕਰਦਾ ਹੈ. |
sqs.send_message() | ਇੱਕ AWWS ਵਰਗS ਕਤਾਰ ਨੂੰ ਇੱਕ ਆਰਡਰ ID ਭੇਜਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਵੰਡਿਆ ਸਿਸਟਮ ਵਿੱਚ ਬੈਕਗ੍ਰਾਉਂਡ ਕਾਰਜਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ. |
await new Promise(resolve =>await new Promise(resolve => setTimeout(resolve, 5000)); | ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਏਪੀਆਈ ਪੋਲਿੰਗ ਕੋਸ਼ਿਸ਼ਾਂ ਵਿੱਚ ਦੇਰੀ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਸੰਪੂਰਨ ਹੋਣ ਦੀ ਉਡੀਕ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਬੇਨਤੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ. |
fetch_order(order_id) | ਡਾਟਾਬੇਸ ਤੋਂ ਆਰਡਰ ਦੇ ਵੇਰਵੇ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ ਕਿ ਪੀਡੀਐਫ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ. |
client.post("/generate-pdf/test_order") | ਟੀ ਟੀ ਪੀ ਟੀ ਟੀ ਟੀ ਟੀ ਟੀ ਟੀ ਬੇਨਤੀ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਕਿ ਫਾਸਪੀਐਮ ਦਾ ਪਿਛੋਕੜ ਕਾਰਜ ਸਹੀ ਤਰ੍ਹਾਂ ਅਰੰਭ ਕੀਤਾ ਜਾਂਦਾ ਹੈ. |
time.sleep(30) | ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਵਿੱਚ ਇੱਕ ਲੰਬੇ ਸਮੇਂ ਦੀ ਚੱਲ ਰਹੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ, ਖਪਤ ਦੇ ਸੰਚਾਲਨ ਅਧੀਨ ਕਾਰਜਾਂ ਦਾ ਵਿਵਹਾਰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ. |
TestClient(app) | ਫਾਸਪੀ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਇੱਕ ਟੈਸਟ ਕਲਾਇੰਟ ਬਣਾਉਂਦਾ ਹੈ, ਜਦੋਂ ਪੂਰੇ ਸਰਵਰ ਨੂੰ ਚਲਾਏ ਬਿਨਾਂ ਏਪੀਆਈ ਦੇ ਅੰਤ ਦੇ ਨਕਸ਼ਿਆਂ ਦੀ ਸਵੈਚਾਲਿਤ ਟੈਸਟਿੰਗ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ. |
AWS ਲਚਕੀਲੇ ਬਾਨਸਟਾਲਕ ਤੇ ਫਾਸਪੀ ਬੈਕਗਰਾ .ਂਡ ਦੇ ਕੰਮਾਂ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ
ਜਦੋਂ ਫਾਸਪੀਸੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਚਲਾਉਂਦੇ ਹੋ AWS ਲਚਕੀਲੇ ਬੀਨਸਟਾਲਕ, ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨਾ 502 ਮਾੜੀਆਂ ਗੇਟਵੇ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਕੁਸ਼ਲਤਾ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਹੈ. ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਜੋ ਅਸੀਂ ਵਿਕਸਤ ਕਰਦੇ ਹਾਂ ਫਾਸਪੀਸੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਪਿਛੋਕੜ ਪੀਡੀਐਫ ਪੀੜ੍ਹੀ ਨੂੰ ਐੱਸਟਰੋਰੇਨੈਕਟ ਤੇ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਵਿਸ਼ੇਸ਼ਤਾ. ਇਹ ਏਪੀਆਈ ਨੂੰ ਤੁਰੰਤ ਜਵਾਬ ਵਾਪਸ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਕਿ ਕੰਮ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਚੱਲਦਾ ਰਹਿੰਦਾ ਹੈ. ਹਾਲਾਂਕਿ, ਇਹ ਪਹੁੰਚ ਇਸਤੋਂ ਗਲੇਸ਼ੇਟਿਡ ਬੈਨਸਟਾਲਕ ਤੇ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦੀ ਹੈ ਜਿਸ ਕਾਰਨ ਗੱਠਜੋੜ ਅਤੇ ਨਗਨੈਕਸ ਹੈਂਡਲ ਬੇਨਤੀ ਸਮਾਂ ਸਮਾਂ ਸਮਾਪਤ ਹੁੰਦਾ ਹੈ.
ਇਸ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਅਸੀਂ ਸੈਲਰੀ ਅਤੇ ਰੀਲੀਸ ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ ਇਕ ਹੋਰ ਮਜਬੂਤ ਹੱਲ ਪੇਸ਼ ਕੀਤਾ. ਇਸ ਸੈਟਅਪ ਵਿੱਚ, ਫਾਸਪੀ ਪੁਆਇੰਟ ਇਸ ਨੂੰ ਸਿੱਧਾ ਹੱਥ ਸੰਭਾਲਣ ਦੀ ਬਜਾਏ ਸੈਲਰੀ ਨੂੰ ਇੱਕ ਕੰਮ ਭੇਜਦਾ ਹੈ. ਸੈਲਰੀ, ਇਕ ਵੱਖਰੇ ਕਰਮਚਾਰੀ ਪ੍ਰਕਿਰਿਆ ਵਿਚ ਚੱਲ ਰਹੀ ਹੈ, ਕਾਰਜ ਨੂੰ ਚੁੱਕਣ ਅਤੇ ਇਸ ਨੂੰ ਮੁੱਖ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਰੋਕਣ ਤੋਂ ਬਿਨਾਂ ਚਲਾਕ ਬਣਾਉਂਦਾ ਹੈ. ਇਹ ਸਮਾਂ ਸਮਾਪਤ ਮੁੱਦਿਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਏਪੀਆਈ ਬੇਨਤੀ ਤੁਰੰਤ ਪੂਰੀ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕਿ ਸੈਲਰੀ ਸੁਤੰਤਰ ਤੌਰ ਤੇ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ. ਕਿਸੇ ਵੀ ਟਾਸਕ ਦੇ ਡੈਲੀਗੇਸ਼ਨ ਦੇ ਹੇਠਾਂ ਸੰਘਰਸ਼ ਵਿੱਚ ਸੰਘਰਸ਼ ਵਿੱਚ ਸੰਘਰਸ਼ ਵਿੱਚ ਇੱਕ for ਨਲਾਈਨ ਸਟੋਰ ਤਿਆਰ ਕਰਨ ਦੀ ਕਲਪਨਾ ਕਰੋ. 🚀
ਇਕ ਹੋਰ ਵਿਕਲਪ ਜੋ ਅਸੀਂ ਖੋਜ ਕਰ ਰਹੇ ਹਾਂ ਕਿ AWS ਵਰਗS (ਸਧਾਰਨ ਕਤਾਰ ਦੀ ਸੇਵਾ). ਅੰਦਰੂਨੀ ਟਾਸਕ ਕਤਾਰ 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਦੀ ਬਜਾਏ, ਇਹ ਵਿਧੀ ਬੈਕਗ੍ਰਾਉਂਡ ਨੌਕਰੀਆਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਸੰਦੇਸ਼ ਕਤਾਰ ਨੂੰ ਧੱਕਦੀ ਹੈ. ਬਾਹਰੀ ਵਰਕਰ ਸੇਵਾ ਨਿਰੰਤਰ ਨਵੇਂ ਕੰਮਾਂ ਲਈ ਐਸਕਿ Q ਜ਼ਾਂ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਅਸੰਕਰੋੜ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰਦੀ ਹੈ. ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਉੱਚ-ਟ੍ਰੈਫਿਕ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿਚ ਲਾਭਦਾਇਕ ਹੈ, ਜਿਵੇਂ ਕਿ ਇਕ ਸਵਾਰੀ-ਸ਼ੇਅਰਿੰਗ ਐਪ ਜਿੱਥੇ ਹਰ ਇਕ ਰਾਈਡ ਮਲਟੀਪਲ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਕੰਮ ਤਿਆਰ ਕਰਦੀ ਹੈ. ਏ ਈ ਐਸ ਪੀ ਕਿ Qs ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਸੀਂ ਏਪੀਆਈ ਤੋਂ ਸਜੈਕਟ ਨੂੰ ਸਜਾਉਂਦੇ ਹਾਂ, ਸਕੇਲੇਬਿਲਟੀ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੇ ਹਾਂ.
ਅੰਤ ਵਿੱਚ, ਫਰੰਟੈਂਡ ਵਾਲੇ ਪਾਸੇ, ਅਸੀਂ ਕੰਮ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੋਕਣ ਲਈ ਇੱਕ ਪੋਲਿੰਗ ਵਿਧੀ ਲਾਗੂ ਕੀਤੀ. ਕਿਉਂਕਿ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਲਗਭਗ 30 ਸਕਿੰਟ ਲੈਂਦਾ ਹੈ, ਫਰੰਟੈਂਡ ਸਮੇਂ-ਸਮੇਂ ਤੇ ਏਪੀਆਈ ਨੂੰ ਪੁੱਛਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕੀ ਪੀਡੀਐਫ ਤਿਆਰ ਹੈ. ਸਰਕਾਰੀ ਬੇਨਤੀਆਂ ਨਾਲ ਸਰਵਰ ਨੂੰ ਵਧਾਉਣ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਇਕ ਅੰਤਰਾਲ-ਅਧਾਰਤ ਪਹੁੰਚ ਲਾਗੂ ਕੀਤੀ ਜੋ ਕਿ ਹਰ 5 ਸਕਿੰਟਾਂ ਵਿਚ ਕੋਸ਼ਿਸ਼ਾਂ ਦੀ ਸੀਮਤ ਗਿਣਤੀ ਲਈ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ. ਇਹ ਬੇਲੋੜੀ ਏਪੀਆਈ ਲੋਡ ਤੋਂ ਪਰਹੇਜ਼ ਕਰਦਿਆਂ ਫਰੰਟੈਂਡ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ. ਇਸ ਰਣਨੀਤੀ ਦੇ ਨਾਲ, ਉਪਭੋਗਤਾ ਜੋ ਕਿ ਟੈਕਸ ਰਿਪੋਰਟਾਂ ਜਿਵੇਂ ਕਿ ਟੈਕਸ ਦੀਆਂ ਰਿਪੋਰਟਾਂ ਦੀ ਬੇਨਤੀ ਕਰਨ ਵਾਲੇ ਉਪਭੋਗਤਾ ਇੰਤਜ਼ਾਰ ਕਰ ਰਹੇ ਹਾਂ. 📄✅
AWS ਲਚਕੀਲੇ ਬੀਨਸਟਾਲਕ 'ਤੇ 502 ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਫਾਸਚੀ ਬੈਕਗ੍ਰਾਉਂਡ ਦੇ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲਣਾ
ਫਾਸਪੀਟੀ ਅਤੇ ਸੈਲਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਕੂਲਿਤ ਬੈਕਐਂਡ ਘੋਲ
from fastapi import FastAPI, BackgroundTasks
from celery import Celery
import time
app = FastAPI()
celery = Celery("tasks", broker="redis://localhost:6379/0")
@celery.task
def generate_pdf_task(order_id: str):
print(f"Generating PDF for order {order_id}")
time.sleep(30) # Simulating long processing time
return f"PDF generated for order {order_id}"
@app.post("/generate-pdf/{order_id}")
async def generate_pdf(order_id: str, background_tasks: BackgroundTasks):
background_tasks.add_task(generate_pdf_task, order_id)
return {"message": "PDF generation started"}
ਵਿਕਲਪਕ ਪਹੁੰਚ: ਬੈਕਗ੍ਰਾਉਂਡ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ AWS ਵਰਗਸ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਫਾਸਪੀਟੀ ਅਤੇ ਏ ਈ ਐਸ ਵਰਗਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਕੂਲਿਤ ਬੈਕਐਂਡ ਘੋਲ
import boto3
from fastapi import FastAPI
app = FastAPI()
sqs = boto3.client('sqs', region_name='us-east-1')
queue_url = "https://sqs.us-east-1.amazonaws.com/your-account-id/your-queue-name"
@app.post("/generate-pdf/{order_id}")
async def generate_pdf(order_id: str):
response = sqs.send_message(
QueueUrl=queue_url,
MessageBody=str(order_id)
)
return {"message": "PDF generation request sent", "message_id": response['MessageId']}
ਫਰੰਟੈਂਡ ਸਕ੍ਰਿਪਟ: ਏਪੀਆਈ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪੋਲ ਕਰੋ
ਪੋਲਿੰਗ ਲਈ ਅਨੁਕੂਲਿਤ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਫਰੰਟੈਂਡ ਹੱਲ
async function checkPdfStatus(orderId) {
let attempts = 0;
const maxAttempts = 5;
while (attempts < maxAttempts) {
const response = await fetch(`/get-pdf-url/${orderId}`);
const data = await response.json();
if (data.pdf_url) {
console.log("PDF available at:", data.pdf_url);
return;
}
attempts++;
await new Promise(resolve => setTimeout(resolve, 5000));
}
console.log("PDF generation timed out.");
}
ਫਾਸਪੀ ਦੇ ਅੰਤ ਲਈ ਇਕਾਈ ਟੈਸਟ
ਫਾਸਟੀਪੀ ਲਈ ਪਾਇਸਟੈਪਿਟੀ ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ ਪਾਈਥਨ ਯੂਨਿਟ ਟੈਸਟ
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_generate_pdf():
response = client.post("/generate-pdf/test_order")
assert response.status_code == 200
assert response.json() == {"message": "PDF generation started"}
ਵੈੱਬਸੌਕੇਟ ਨਾਲ ਫਾਸਟਾਪ ਬੈਕਗਰਾ .ਂਡ ਟਾਸਕ ਹੈਂਡਲਿੰਗ ਨੂੰ ਵਧਾਉਣਾ
ਵਿੱਚ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਨਾਲ ਇੱਕ ਚੁਣੌਤੀ ਫਾਸਪੀਟੀ ਅਯੋਗ ਵੋਟਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਿਆਂ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਰੀਅਲ-ਟਾਈਮ ਅਪਡੇਟਾਂ ਪ੍ਰਦਾਨ ਕਰ ਰਿਹਾ ਹੈ. ਇੱਕ ਵਧੀਆ ਵਿਕਲਪ ਵਰਤ ਰਿਹਾ ਹੈ ਵੈਬਸੈਕਟ, ਜੋ ਕਲਾਇੰਟ ਅਤੇ ਸਰਵਰ ਦੇ ਵਿਚਕਾਰ ਬਾਇਡੀਰਸ਼ਨਲ ਸੰਚਾਰ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ. ਕਿਸੇ ਕੰਮ ਦੀ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਵਾਰ ਵਾਰ ਅੰਤ-ਵਾਰ ਬਿਆਨ ਕਰਨ ਦੀ ਬਜਾਏ, ਬੈਕਐਂਡ ਭੇਜ ਸਕਦਾ ਹੈ ਜਦੋਂ ਵੀ ਤਰੱਕੀ ਹੁੰਦੀ ਹੈ.
ਵੈਬਸਕੈਟਾਂ ਦੇ ਨਾਲ, ਜਦੋਂ ਉਪਭੋਗਤਾ ਇੱਕ ਪੀਡੀਐਫ ਪੀੜ੍ਹੀ ਨੂੰ ਬੇਨਤੀ ਕਰਦਾ ਹੈ, ਸਰਵਰ ਤੁਰੰਤ ਬੇਨਤੀ ਨੂੰ ਬੇਨਤੀ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਪ੍ਰੋਸੈਸਿੰਗ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ. ਜਿਵੇਂ ਕਿ ਕੰਮ ਵਧਦਾ ਹੈ, ਵੈਬਸਕੇਟ ਦੇ ਸੁਨੇਹੇ ਵੱਖ-ਵੱਖ ਪੜਾਵਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦੇ ਸਕਦੇ ਹਨ, "ਅਤੇ" ਪੂਰਾ ਹੋ ਰਹੇ ਹਨ. " ਇਹ ਬੇਲੋੜੀ ਏਪੀਆਈ ਕਾਲਾਂ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਦੇ ਤਜਰਬੇ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ, ਖ਼ਾਸਕਰ ਈ-ਕਾਮਰਸ ਇਨਵੌਇਸ ਪੀੜ੍ਹੀ ਜਾਂ ਰਿਪੋਰਟ ਡਾਉਨਲੋਡਸ ਵਰਗੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ. 🚀
ਫਾਸਪੀਟ ਨੂੰ ਫਾਸਟੈਪਾਈ ਵਿੱਚ ਲਾਗੂ ਕਰਨਾ ਵਰਤਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ ਅਸੈਨੀਓ ਅਤੇ ਵੈਬਸੈਕਟ ਮੋਡੀ ule ਲ. ਇੱਕ ਵੈੱਬਸਕੇਟ ਕੁਨੈਕਸ਼ਨ ਸਥਾਪਤ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਫਰੰਟੈਂਡ ਅਪਡੇਟਾਂ ਦੀ ਚੋਣ ਸੁਣਦਾ ਹੈ, ਅਤੇ ਬੈਕਐਂਡ ਰੀਅਲ-ਟਾਈਮ ਸੰਦੇਸ਼ਾਂ ਨੂੰ ਧੱਕਦਾ ਹੈ. ਇਹ ਵਿਧੀ ਰਵਾਇਤੀ ਪੋਲਿੰਗ ਦੇ ਮੁਕਾਬਲੇ ਬਹੁਤ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ ਅਤੇ ਕਾਰਜਸ਼ੀਲ ਕਾਰਜਾਂ ਵਿੱਚ ਵਿਆਪਕ ਤੌਰ ਤੇ ਵਰਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਵਿੱਤੀ ਡੈਸ਼ਬੋਰਡਾਂ ਅਤੇ ਸਹਿਯੋਗੀ ਸੰਪਾਦਨ ਟੂਲ.
ਫਾਸਪੀਸ ਬੈਕਗ੍ਰਾਉਂਡ ਕੰਮਾਂ ਤੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਪ੍ਰਸ਼ਨ
- ਮੇਰਾ ਫਾਸਟੀਪੀ ਬੈਕਗ੍ਰਾਉਂਡ ਟਾਸਕ ਐੱਲਸਸਟਿਕ ਬੈਨਸਟਾਲਕ 'ਤੇ ਕਿਉਂ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ?
- ਇਹ ਅਕਸਰ nginx ਜਾਂ ਬੁਨਿਆਾਰੀ ਟਾਈਮਆਉਟ ਦੇ ਕਾਰਨ ਹੁੰਦਾ ਹੈ. ਸੈਟਿੰਗ --timeout ਪ੍ਰਕ੍ਰਿਆ ਵਿੱਚ ਅਤੇ nginx ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨ ਵਿੱਚ proxy_read_timeout ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ.
- ਮੈਂ ਫਾਸਪੀਆਈ ਵਿੱਚ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਉਦਾਹਰਣਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਵਰਤਣ WebSockets ਰੀਅਲ-ਟਾਈਮ ਅਪਡੇਟਾਂ ਲਈ ਜਾਂ ਇੱਕ ਡੇਟਾਬੇਸ ਵਿੱਚ ਕਾਰਜ ਦੀ ਪ੍ਰਗਤੀ ਨੂੰ ਸਟੋਰ ਕਰੋ ਅਤੇ ਇਸ ਨੂੰ ਏਪੀਆਈ ਦੇ ਅੰਤ ਬਿੰਦੂ ਦੁਆਰਾ ਬੇਨਕਾਬ ਕਰੋ.
- ਫਾਸਪੀ ਵਿੱਚ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨੂੰ ਕਤਾਰ ਲਗਾਉਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਕੀ ਹੈ?
- ਦੀ ਵਰਤੋਂ Celery ਰੀਡਿਸ ਜਾਂ ਰੈਬਿਟਮੈਟ ਨਾਲ ਤੇਜ਼ੀ ਨਾਲ ਕਾਰਜਾਂ ਦੇ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨਾਲੋਂ ਮਜਬੂਤ ਟਾਸਕ ਕਤਾਰਕਰਣ ਅਤੇ ਬਿਹਤਰ ਸਕੇਲੇਬਿਲਟੀ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ.
- ਕੀ ਫਾਸਪੀ ਵਿਚ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਲਈ AWS ਲੈਂਬਡਾ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ?
- ਹਾਂ, ਤੁਸੀਂ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਕੰਮਾਂ ਨੂੰ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ AWS Lambda ਦੁਆਰਾ ਚਾਲੂ SQS ਜਾਂ API Gateway ਸਕੇਲਬਿਲਟੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਲਈ.
- ਮੈਂ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਫਾਸਟਪੀਸੀ ਕਾਰਜਾਂ ਲਈ ਏਪੀਆਈ ਟਾਈਮਆਉਟ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਇਸ ਦੀ ਬਜਾਏ ਜਵਾਬ ਦੀ ਉਡੀਕ ਕਰਨ ਦੀ ਬਜਾਏ, ਇਸ ਕਾਰਜ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ ਵਰਤਣਾ background_tasks.add_task() ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ.
ਫਾਸਪੀ ਵਿੱਚ ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲਣ ਦੇ ਅੰਤਮ ਵਿਚਾਰ
ਸਰਵਰ ਦੇ ਟਾਈਮਆ .ਟ ਅਤੇ ਏਪੀਆਈ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਫਾਸਪੀਸੀ ਵਿੱਚ ਕੁਸ਼ਲਤਾ ਨਾਲ ਫਾਸਪੀਟੀ ਵਿੱਚ ਕੁਸ਼ਲਤਾ ਨਾਲ ਜ਼ਰੂਰੀ ਹੈ. ਲਚਕੀਲੇ ਬੰਸਸਟਾਲਕ ਦੀਆਂ ਡਿਫਾਲਟ ਸੈਟਿੰਗਜ਼ ਨੂੰ ਬੈਕਗ੍ਰਾਉਂਡ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਅਨੁਕੂਲ ਨਹੀਂ ਹੁੰਦਾ, ਸੈਲਰੀ, ਆਉ ਵਰਗ ਜਾਂ ਜਾਂ ਵੈਬਸਕੇਕਟਾਂ ਦੀਆਂ ਨਾਖਾਣੀਆਂ. ਸਹੀ ਕਤਾਰਕਰਣ ਅਤੇ ਰੀਅਲ-ਟਾਈਮ ਅਪਡੇਟ ਵਿਧੀ ਲਾਗੂ ਕਰਕੇ, ਏਪੀਆਈਸ ਭਾਰੀ ਭਾਰ ਦੇ ਹੇਠਾਂ ਵੀ ਪ੍ਰਦਰਸ਼ਨਕਾਰ ਅਤੇ ਸਕੇਲ ਹੋ ਜਾਂਦੇ ਹਨ. ⚡
ਵੱਡੇ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਈ-ਕਾਮਰਸ ਪਲੇਟਫਾਰਮ ਵਿੱਚ ਇਨਵੌਇਸ ਪਲੇਟਫਾਰਮ, ਬੈਕਗ੍ਰਾਉਂਡ ਐਗਜ਼ੀਕਿ .ਸ਼ਨ ਆਧੁਨਿਕ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਮਹੱਤਵਪੂਰਣ ਭੂਮਿਕਾ ਅਦਾ ਕਰਦਾ ਹੈ. ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਪ੍ਰੋਜੈਕਟ ਦੀਆਂ ਜ਼ਰੂਰਤਾਂ ਦੇ ਅਧਾਰ ਤੇ ਸਹੀ ਪਹੁੰਚ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਕਿ ਉਨ੍ਹਾਂ ਦੀ ਏਪੀਆਈ ਬਿਨਾਂ ਕਿਸੇ ਰੁਕਾਵਟਾਂ ਤੋਂ ਲੰਬੇ ਸਮੇਂ ਦੀਆਂ ਨੌਕਰੀਆਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦੀ ਹੈ. ਸਕੇਲੇਬਲ ਟਾਸਕ ਮੈਨੇਜਮੈਂਟ ਹੱਲ਼ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰਨਾ ਦੋਵਾਂ ਉਪਭੋਗਤਾਵਾਂ ਅਤੇ ਡਿਵੈਲਪਰਾਂ ਲਈ ਇੱਕ ਨਿਰਵਿਘਨ ਤਜ਼ਰਬੇ ਦੀ ਗਰੰਟੀ ਦਿੰਦਾ ਹੈ.
ਵਾਧੂ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਪਿਛੋਕੜ ਦੇ ਕੰਮਾਂ ਤੇ ਅਧਿਕਾਰਤ ਫਾਸਪੀਟੀ ਦਸਤਾਵੇਜ਼: ਫਾਸਪੀ ਬੈਕਗਰਾ .ਂਡ ਦੇ ਕੰਮ
- ਲਚਕੀਲੇ ਬੰਸਸਟਾਲਕ ਟਾਈਮਆਉਟ ਸੈਟਿੰਗਜ਼ ਅਤੇ ਕੌਂਫਿਗਰੇਸ਼ਨ: AWS ਲਚਕੀਲੇ ਬੀਨਸਟਾਲਕ ਕੌਂਫਿਗਰੇਸ਼ਨ
- ਪਾਈਥਨ ਵਿੱਚ ਪਗਰਾਉਂਡ ਟਾਸਕ ਪ੍ਰਕਿਰਿਆ ਲਈ ਸੈਲਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨਾ: ਸੈਲਰੀ ਦਸਤਾਵੇਜ਼
- ਵੈਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣਾ: ਐਮਡੀਐਨ ਵੈਬਸੈਕਟ ਗਾਈਡ
- ਏਪੀਆਈ ਕਾਰਗੁਜ਼ਾਰੀ ਦਾ ਅਨੁਕੂਲਣ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ: ਗੂਗਲ ਕਲਾਉਡ ਏਪੀਆਈ ਸਰਬੋਤਮ ਅਭਿਆਸ