Python डेवलपर इंटरव्यू सवाल

async FastAPI endpoint के अंदर पड़ी blocking लाइब्रेरी कॉल को आप कैसे संभालेंगे?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

उसे event loop से हटा दें। blocking call को asyncio.to_thread में लपेटें, या thread pool के साथ run_in_executor इस्तेमाल करें, ताकि लूप बाकी requests के लिए खाली रहे। अगर काम CPU bound है तो उसे process pool या Celery जैसे background worker पर भेजें। वहीं छोड़ देने पर एक धीमी कॉल उस वर्कर की हर दूसरी request रोक देती है।

इंटरव्यूअर यह क्यों पूछते हैं

लूप को ब्लॉक करना async की सबसे बड़ी गलती है, और इससे सबसे बुरी तरह का आउटेज बनता है: ऐसी latency जो टेस्ट में ठीक दिखती है और लोड में ढह जाती है। इंटरव्यूअर सबूत चाहता है कि आप cooperative scheduling समझते हैं, कि coroutine को कोई बीच में नहीं रोकता, और आप जानते हैं कि FastAPI सादे def endpoints को पहले ही threadpool में चलाता है, जो अक्सर सबसे सरल सही जवाब है।

अपना जवाब कैसे स्ट्रक्चर करें

  • समझाएं कि लूप ब्लॉक करना घातक क्यों है।
  • I/O के लिए to_thread या executor सुझाएं।
  • CPU bound काम processes या queue पर भेजें।
  • FastAPI में सादे def endpoint वाला विकल्प बताएं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

यह इसलिए मायने रखता है कि asyncio cooperative और सिंगल थ्रेडेड है, तो coroutine लूप को तब तक पकड़े रहता है जब तक वह किसी चीज पर await न करे। async handler में बैठी blocking driver कॉल उस वर्कर की बाकी हर चालू request जमा देती है, और कम ट्रैफिक में आपको पता ही नहीं चलेगा। FastAPI में सबसे सस्ता हल यह है कि endpoint को async def की जगह सादा def बनाया जाए, और framework उसे अपने threadpool में चला देता है। अगर मुझे इसे किसी async फंक्शन के अंदर चाहिए तो asyncio.to_thread कॉल को लपेटकर नतीजे का await कर लेता है। जहां मैं सावधान रहता हूं वह है thread pool का साइज, क्योंकि डिफॉल्ट छोटा है और कोई धीमी dependency उसके पीछे कतार लगा देगी, तो मैं उसे अपेक्षित concurrency के हिसाब से रखता हूं और timeout जोड़ता हूं। CPU के भारी काम में डिफॉल्ट build पर थ्रेड्स मदद नहीं करते, तो वह process pool या Celery वर्कर पर जाता है। ऐसा एक मामला हमें एक पुरानी SOAP client से मिला जो आठ सेकंड लेती थी, और पूरी सर्विस की p99 latency उसी एक कॉल के पीछे चल रही थी।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • प्रोडक्शन में ब्लॉक हुए लूप को आप कैसे पकड़ेंगे?
  • asyncio का debug mode क्या बताता है?
  • क्या वहां synchronous डेटाबेस driver कभी स्वीकार्य है?

Python डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं