पृष्ठभूमि कार्य चलाना
लंबे समय तक चलने वाले संचालन को पृष्ठभूमि कार्यों में भेजना सीखें, ताकि API अवरुद्ध न हो और उपयोगकर्ता अनुभव बेहतर बने।
पृष्ठभूमि कार्य चलाना, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
धीमे एंडपॉइंट और उपयोगकर्ता अनुभव
कल्पना कीजिए कि आपके API को उपयोगकर्ता के अनुरोध के बाद ईमेल भेजने या बड़ी फ़ाइल संसाधित करने जैसा समय लेने वाला काम करना है।
यदि आपका API उत्तर देने से पहले इन कार्यों के पूरा होने की प्रतीक्षा करता है, तो उपयोगकर्ता को अनुप्रयोग धीमा और अनुत्तरदायी लगता है। इसे रोकने वाला संचालन कहा जाता है।
खराब उपयोगकर्ता अनुभव के कारण उपयोगकर्ता अक्सर आपका ऐप छोड़ देते हैं!
रोकने वाले बनाम बिना रुकावट वाले API
इसे खाना ऑर्डर करने जैसा समझिए:
- रोकने वाला: आप ऑर्डर देते हैं और वेटर आपके खाने के पकने, परोसे जाने और आपके खाने तक अगले ग्राहक का ऑर्डर नहीं लेता। (बहुत खराब सेवा!)
- बिना रुकावट वाला: आप ऑर्डर देते हैं, वेटर आपका ऑर्डर रसोई तक पहुँचाता है और तुरंत अगले ग्राहक का ऑर्डर ले लेता है। आपका खाना पृष्ठभूमि में तैयार होता रहता है।
सुविधाजनक उपयोगकर्ता अनुभव के लिए हम चाहते हैं कि हमारे API बिना रुकावट के काम करें।
FastAPI के BackgroundTasks से परिचय
FastAPI क्लाइंट को HTTP उत्तर भेजने के बाद 'पृष्ठभूमि' में संचालन चलाने का एक सरल तरीका उपलब्ध कराता है। यह BackgroundTasks निर्भरता का उपयोग करके किया जाता है।
BackgroundTasks आपको ऐसे फ़ंक्शन की सूची में जोड़ने देता है जिन्हें मुख्य API रूट के पूरा होने और उत्तर भेजे जाने के बाद चलाया जाएगा।
BackgroundTasks जोड़ना
पृष्ठभूमि कार्यों का उपयोग करने के लिए, अपने पाथ ऑपरेशन फ़ंक्शन में BackgroundTasks प्रकार वाला एक पैरामीटर घोषित करें। FastAPI इसमें इसका एक इंस्टेंस अपने-आप जोड़ देगा।
fastapiसेBackgroundTasksआयात करें।- एक पैरामीटर घोषित करें, जैसे
background_tasks: BackgroundTasks। - किसी फ़ंक्शन को शेड्यूल करने के लिए
background_tasks.add_task()का उपयोग करें।
पहले पृष्ठभूमि कार्य का प्रदर्शन
आइए एक बुनियादी उदाहरण देखते हैं। API उत्तर भेजे जाने के बाद यह कार्य एक संदेश प्रिंट करेगा। uvicorn main:app --reload चलाना याद रखें।
from fastapi import FastAPI, BackgroundTasks
import time
app = FastAPI()
def write_notification(email: str, message=""):
time.sleep(2) # Simulate a long operation
with open("log.txt", mode="a") as email_file:
email_file.write(f"notification for {email}: {message}\n")
print(f"Notification written for {email}")
@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(write_notification, email, message="Welcome to CoddyKit!")
return {"message": "Notification sent in background!"}
निष्पादन प्रवाह को समझना
यह समझना बहुत महत्वपूर्ण है कि पृष्ठभूमि कार्य कब चलते हैं:
- पाथ ऑपरेशन फ़ंक्शन चलता है।
- HTTP उत्तर क्लाइंट को वापस भेजा जाता है।
- इसके बाद,
BackgroundTasksमें जोड़े गए फ़ंक्शन चलाए जाते हैं।
इसका अर्थ है कि क्लाइंट को इन कार्यों के पूरा होने की प्रतीक्षा नहीं करनी पड़ती, जिससे अनुमानित प्रदर्शन बेहतर होता है।
कार्य में तर्क भेजना
आप अपने पृष्ठभूमि फ़ंक्शन के लिए आवश्यक कोई भी तर्क add_task() को दे सकते हैं। पहला तर्क स्वयं फ़ंक्शन होता है, उसके बाद उसके तर्क दिए जाते हैं।
सामान्य Python फ़ंक्शन को कॉल करने की तरह तर्क स्थितीय या कीवर्ड तर्क हो सकते हैं।
उदाहरण के लिए: background_tasks.add_task(my_function, arg1, arg2=value)।
ईमेल भेजने का अनुकरण
पृष्ठभूमि कार्यों का एक सामान्य उपयोग ईमेल भेजना है। इसमें कुछ सेकंड लग सकते हैं, और यदि इसे सीधे API रूट में किया जाए तो उपयोगकर्ता को प्रतीक्षा करनी पड़ेगी।
यहाँ हम कई प्राप्तकर्ताओं को ईमेल भेजने का अनुकरण करते हैं। इसे /docs इंटरफ़ेस से आज़माएँ!
from fastapi import FastAPI, BackgroundTasks
import asyncio # For async sleep
app = FastAPI()
async def send_email_async(recipients: list, subject: str, body: str):
print(f"Starting email send to {recipients}...")
await asyncio.sleep(3) # Simulate network delay for sending email
print(f"Email '{subject}' sent to {recipients} with body: '{body}'")
@app.post("/send-marketing-email/")
async def marketing_campaign(
recipients: list[str],
subject: str,
body: str,
background_tasks: BackgroundTasks
):
# The actual email sending is offloaded
background_tasks.add_task(send_email_async, recipients, subject, body)
return {"message": "Marketing email campaign initiated in background!"}
महत्वपूर्ण बातें
शक्तिशाली होने के बावजूद, BackgroundTasks हर काम के लिए उपयुक्त नहीं हैं:
- कम अवधि वाले: ऐसे कार्यों के लिए सबसे अच्छे हैं जो अपेक्षाकृत जल्दी (कुछ सेकंड से कुछ मिनटों में) पूरे हो जाते हैं।
- स्थायित्व नहीं: यदि आपकी FastAPI प्रक्रिया क्रैश हो जाती है, तो शेड्यूल किए गए कार्य खो जाते हैं।
- दोबारा प्रयास नहीं: विफल कार्यों के लिए इनमें पहले से कोई पुनःप्रयास तंत्र नहीं होता।
- भारी गणना के लिए नहीं: बहुत लंबे समय तक चलने वाले, CPU-गहन या त्रुटि-सहिष्णु कार्यों के लिए Celery, Redis Queue (RQ) या इसी प्रकार की समर्पित कार्य कतारों का उपयोग करने पर विचार करें।
पृष्ठभूमि कार्यों की जाँच
आपने BackgroundTasks का उपयोग करना सीख लिया है। FastAPI के BackgroundTasks के बारे में निम्नलिखित में से कौन-सा कथन सही है?
पुनरावलोकन: पृष्ठभूमि कार्य
हमने देखा कि FastAPI के BackgroundTasks आपके API को प्रतिक्रियाशील बनाए रखने में कैसे मदद करते हैं:
- वे HTTP प्रतिक्रिया भेजे जाने के बाद चलते हैं।
- ये सूचनाएँ भेजने जैसे गैर-महत्वपूर्ण और अपेक्षाकृत कम समय तक चलने वाले कार्यों के लिए बहुत उपयोगी हैं।
- आप इन्हें निर्भरता के रूप में घोषित करके
add_task()का उपयोग करते हैं। - वास्तव में लंबे समय तक चलने वाले या महत्वपूर्ण कार्यों के लिए बाहरी कार्य कतारों का उपयोग करने पर विचार करें।
पृष्ठभूमि कार्यों का उपयोग करके आप अपने API उपयोगकर्ताओं के लिए अधिक सहज अनुभव सुनिश्चित करते हैं!
एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 21
- पाठ
- 84
अक्सर पूछे जाने वाले प्रश्न
क्या “पृष्ठभूमि कार्य चलाना” पाठ निःशुल्क है?
हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “पृष्ठभूमि कार्य चलाना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“पृष्ठभूमि कार्य चलाना” में मैं क्या सीखूँगा?
लंबे समय तक चलने वाले संचालन को पृष्ठभूमि कार्यों में भेजना सीखें, ताकि API अवरुद्ध न हो और उपयोगकर्ता अनुभव बेहतर बने। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“पृष्ठभूमि कार्य चलाना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Python में Async/Await का पुनरावलोकन
- FastAPI और अतुल्यकालिक संचालन
- पृष्ठभूमि कार्य चलाना
- रियल-टाइम संचार के लिए WebSockets