FastAPI बैकएंड डेवलपमेंट बूटकैंप · पाठ

FastAPI और अतुल्यकालिक संचालन

समझें कि FastAPI अतुल्यकालिक फ़ंक्शन को स्वाभाविक रूप से कैसे संभालता है और कुशल, गैर-अवरोधक कोड कैसे लिखा जाता है।

पाठ 2, कुल 4 में से11 चरण

FastAPI और अतुल्यकालिक संचालन, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

FastAPI की असिंक्रोनस नींव

FastAPI गति के लिए बनाया गया है! यह कई अनुरोधों को समवर्ती रूप से संभालने के लिए Python की असिंक्रोनस सुविधाओं का उपयोग करता है, विशेष रूप से I/O-आधारित कार्यों के लिए।

इसका अर्थ है कि डेटाबेस या अन्य API जैसे बाहरी संसाधनों की प्रतीक्षा करते समय भी आपका API प्रतिक्रियाशील बना रह सकता है।

सिंक्रोनस बनाम असिंक्रोनस एंडपॉइंट

FastAPI में, आप एंडपॉइंट फ़ंक्शन के दो मुख्य प्रकार परिभाषित कर सकते हैं:

  • सिंक्रोनस (def): इनके चलते समय ये इवेंट लूप को रोक देते हैं। यदि एक अनुरोध में अधिक समय लगता है, तो अन्य अनुरोधों को प्रतीक्षा करनी पड़ सकती है।
  • असिंक्रोनस (async def): ये किसी संचालन (जैसे डेटाबेस से पढ़ने) की प्रतीक्षा करते समय रुक सकते हैं और अन्य कार्यों को चलने दे सकते हैं, जिससे आपका API बिना रुकावट के काम करता है।

सरल सिंक्रोनस एंडपॉइंट

यह एक सामान्य सिंक्रोनस एंडपॉइंट है। यह सरल है, लेकिन यदि time.sleep() किसी वास्तविक, धीमे डेटाबेस कॉल का प्रतिनिधित्व करता, तो उसके पूरा होने तक यह अन्य अनुरोधों को रोक देता।

इसे चलाकर देखें और थोड़े समय में कई अनुरोध करने पर होने वाली देरी को ध्यान से देखें।

from fastapi import FastAPI
import uvicorn
import time

app = FastAPI()

@app.get("/sync_hello")
def sync_hello():
    time.sleep(2) # Simulate a blocking I/O operation
    return {"message": "Hello from sync endpoint!"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

असिंक्रोनस एंडपॉइंट परिभाषित करना

अपने एंडपॉइंट को बिना रुकावट वाला बनाने के लिए async def का उपयोग करें। इससे FastAPI (और Python) को पता चलता है कि इस फ़ंक्शन को रोका और फिर से चलाया जा सकता है।

async def फ़ंक्शन के अंदर, पूरे अनुप्रयोग को रोके बिना अन्य असिंक्रोनस संचालन के पूरा होने की प्रतीक्षा करने के लिए await कीवर्ड का उपयोग किया जाता है।

आपका पहला असिंक्रोनस एंडपॉइंट

इस उदाहरण में asyncio.sleep() का उपयोग किया गया है, जो एक असिंक्रोनस स्लीप फ़ंक्शन है। इसके पहले दिए गए await कीवर्ड पर ध्यान दें।

इससे FastAPI इस अनुरोध के 'सोने' के दौरान अन्य अनुरोधों को संभाल सकता है और सर्वर अधिक प्रतिक्रियाशील बना रहता है।

from fastapi import FastAPI
import uvicorn
import asyncio

app = FastAPI()

@app.get("/async_hello")
async def async_hello():
    await asyncio.sleep(2) # Simulate non-blocking I/O
    return {"message": "Hello from async endpoint!"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

असिंक्रोनस का उपयोग कब करें

async def I/O-आधारित संचालन के लिए बहुत उपयोगी है। ये ऐसे कार्य हैं जिनका अधिकांश समय किसी अन्य चीज़ के होने की प्रतीक्षा में बीतता है, जैसे:

  • बाहरी API को अनुरोध भेजना (जैसे, httpx)।
  • डेटाबेस से जानकारी लेना (जैसे, asyncpg, SQLModel)।
  • डिस्क से फ़ाइलें पढ़ना या उनमें लिखना।
  • नेटवर्क संचार।

CPU-आधारित कार्यों (भारी गणनाओं) के लिए async def स्वयं कार्य को तेज़ नहीं करता, लेकिन यह सर्वर को प्रतिक्रियाशील बनाए रखने में मदद कर सकता है।

असिंक्रोनस लाइब्रेरी के साथ काम करना

जब आपके FastAPI async def एंडपॉइंट को किसी अन्य असिंक्रोनस लाइब्रेरी (जैसे असिंक्रोनस HTTP क्लाइंट या असिंक्रोनस डेटाबेस ड्राइवर) के साथ काम करना हो, तो आपको await का उपयोग अवश्य करना चाहिए।

await का उपयोग न करने पर awaitable ऑब्जेक्ट सीधे लौटाया जाएगा, उसका हल किया हुआ परिणाम नहीं—और आमतौर पर आप ऐसा नहीं चाहते!

अवधारणात्मक असिंक्रोनस API कॉल

किसी अन्य सेवा से डेटा प्राप्त करने की कल्पना कीजिए। असिंक्रोनस HTTP क्लाइंट बिना रुकावट के ऐसा करने देता है। async def एंडपॉइंट के अंदर यह अवधारणात्मक रूप से इस प्रकार दिखता है:

बिना रुकावट वाले व्यवहार को दिखाने के लिए हम नेटवर्क की देरी का अनुकरण asyncio.sleep से करते हैं।

from fastapi import FastAPI
import uvicorn
import asyncio

app = FastAPI()

@app.get("/fetch_data")
async def fetch_external_data():
    # In a real app, you'd use an async HTTP client like 'httpx'
    # async with httpx.AsyncClient() as client:
    #     response = await client.get("https://api.example.com/data")
    #     data = response.json()

    await asyncio.sleep(1) # Simulate network latency
    return {"data": "Fetched async data!"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Uvicorn: असिंक्रोनस इंजन

FastAPI, Uvicorn जैसे ASGI सर्वर पर निर्भर करता है। Uvicorn ही आपके async def फ़ंक्शनों को कुशलतापूर्वक चलाता है।

  • यह Python के इवेंट लूप का प्रबंधन करता है, जो यह समन्वय करता है कि अलग-अलग असिंक्रोनस कार्य कब चलें।
  • जब await मिलता है, तो Uvicorn किसी अन्य तैयार कार्य पर जा सकता है, जिससे आपका API अत्यधिक समवर्ती बनता है।

यही 'संदर्भ बदलाव' FastAPI को प्रत्येक अनुरोध के पूरी तरह समाप्त होने की प्रतीक्षा किए बिना कई अनुरोध संभालने देता है।

त्वरित जाँच: असिंक्रोनस उपयोग

आप एक ऐसा FastAPI एंडपॉइंट बना रहे हैं जिसे किसी धीमे बाहरी API से डेटा प्राप्त करना है (यह I/O-आधारित कार्य है)। आपके FastAPI अनुप्रयोग को प्रतिक्रियाशील बनाए रखने के लिए इस एंडपॉइंट को परिभाषित करने का सबसे अच्छा तरीका निम्नलिखित में से कौन-सा है?

पुनरावलोकन: असिंक्रोनस FastAPI

हमने देखा कि FastAPI Python की असिंक्रोनस सुविधाओं का उपयोग कैसे करता है:

  • I/O-आधारित संचालन करने वाले एंडपॉइंट फ़ंक्शनों के लिए async def का उपयोग करें।
  • async def के अंदर अन्य असिंक्रोनस फ़ंक्शन या लाइब्रेरी को कॉल करते समय await का उपयोग करें।
  • Uvicorn और इवेंट लूप से संचालित यह बिना रुकावट वाला तरीका आपके FastAPI अनुप्रयोग को कई समवर्ती अनुरोध कुशलतापूर्वक संभालने देता है, जिससे API अत्यधिक प्रतिक्रियाशील बनते हैं।

अगले भाग में हम देखेंगे कि वास्तव में लंबे समय तक चलने वाले या CPU-आधारित कार्यों को पृष्ठभूमि प्रक्रियाओं में कैसे भेजा जाता है!

शुरुआत निःशुल्क

एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
21
पाठ
84

अक्सर पूछे जाने वाले प्रश्न

क्या “FastAPI और अतुल्यकालिक संचालन” पाठ निःशुल्क है?

हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “FastAPI और अतुल्यकालिक संचालन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“FastAPI और अतुल्यकालिक संचालन” में मैं क्या सीखूँगा?

समझें कि FastAPI अतुल्यकालिक फ़ंक्शन को स्वाभाविक रूप से कैसे संभालता है और कुशल, गैर-अवरोधक कोड कैसे लिखा जाता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“FastAPI और अतुल्यकालिक संचालन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Python में Async/Await का पुनरावलोकन
  2. FastAPI और अतुल्यकालिक संचालन
  3. पृष्ठभूमि कार्य चलाना
  4. रियल-टाइम संचार के लिए WebSockets
← FastAPI बैकएंड डेवलपमेंट बूटकैंप पर वापस जाएँ