+− THE DAILY DIFFdev & AI news
SHIP IT

जब प्रतिक्रिया गायब हो जाती है तो स्ट्राइप आपके अनुरोध को याद रखता है

सर्वर द्वारा ऑपरेशन पूरा करने के बाद एक टाइमआउट चेकआउट को अनिश्चित छोड़ सकता है।

सर्वर द्वारा ऑपरेशन पूरा करने के बाद एक टाइमआउट चेकआउट को अनिश्चित छोड़ सकता है। यह अंडर द हुड एक्सप्लेनर स्थिर ऑपरेशन कुंजी, सहेजे गए-प्रतिक्रिया रीप्ले, पैरामीटर और समवर्ती सीमा, प्रतिधारण क्षितिज और परिणाम सुलह को दिखाने के लिए स्ट्राइप एपीआई वी1 के दस्तावेजित आइडम्पोटेंसी अनुबंध का उपयोग करता है।

लिखित संस्करण पढ़ें (अंग्रेजी) ↗

इस वीडियो में क्या शामिल है

  • आइडम्पोटेंसी किसी ऑपरेशन को दोहराने के इच्छित प्रभाव से संबंधित है। स्ट्राइप एपीआई वी1 एक दस्तावेजित सहेजे गए-प्रतिक्रिया रीप्ले अनुबंध जोड़ता है।
  • समान तार्किक कार्रवाई का पुनः प्रयास करने पर समान कुंजी और पैरामीटर का उपयोग होता है। अलग-अलग SDK कॉल या एप्लिकेशन रीस्टार्ट में ऑपरेशन कुंजी को बनाए रखें; एक वास्तविक नई कार्रवाई के लिए अपनी कुंजी की आवश्यकता होती है।
  • एंडपॉइंट निष्पादन शुरू होने के बाद, स्ट्राइप एपीआई वी1 पहले अनुरोध की स्थिति और बॉडी को सहेजता है, जिसमें 500 त्रुटियां भी शामिल हैं, और रिट्री पर उस सहेजे गए प्रतिक्रिया को वापस करता है।
  • समान कुंजी के साथ बदले गए पैरामीटर बेमेल उत्पन्न करते हैं। सत्यापन विफलताएं और समवर्ती निष्पादन विरोध उस प्रयास के लिए कोई आइडम्पोटेंट परिणाम नहीं बचाते हैं और उन्हें फिर से आज़माया जा सकता है।
  • स्ट्राइप एपीआई वी1 कुंजी को कम से कम 24 घंटे के लिए बनाए रखता है और उसके बाद उन्हें हटा सकता है। अनसुलझे नेटवर्क रिट्री को पहले 24 घंटों तक सीमित करें, फिर ऑपरेशन को दोहराने से पहले रोकें और सुलझाएं।
  • कनेक्टिविटी ठीक होने के बाद भी एक कैश की गई 500 त्रुटि फिर से चल सकती है। मूल ऑपरेशन के साइड इफेक्ट हो सकते हैं; इसके परिणाम को स्थापित करने के लिए प्रासंगिक ऑब्जेक्ट, डैशबोर्ड अनुरोध और वेबहुक का उपयोग करें।
  • एपीआई वी2 अलग-अलग रीप्ले सिमेंटिक्स का उपयोग करता है। एक कुंजी ईमेल, इन्वेंट्री और प्रत्येक स्थानीय डेटाबेस ऑपरेशन के लिए सार्वभौमिक रूप से बिल्कुल-एक बार डिलीवरी स्थापित नहीं करती है।

अनुवादित प्रतिलेख

मूल अंग्रेजी कथन से अनुवादित। उपलब्ध ऑडियो और कैप्शन YouTube द्वारा नियंत्रित होते हैं।

क्या टाइमआउट ने आपके भुगतान को रद्द कर दिया?

0:00 आपको लगता है कि टाइमआउट का मतलब है कि आपका भुगतान विफल हो गया। सर्वर जवाब गायब होने के दौरान काम पूरा कर सकता है, जिससे आपका चेकआउट आत्मविश्वास से बिल्कुल कुछ भी प्रदर्शित नहीं करता है। पुनः प्रयास फिर से शुल्क क्यों ले सकता है? स्ट्राइप एक प्रयास को कैसे याद रखता है? आपको पुनः प्रयास करना कब बंद कर देना चाहिए? और एक गंदी बात को ध्यान में रखें। एक याद की गई त्रुटि नेटवर्क समस्या से अधिक समय तक रह सकती है।

0:17 हम इस पर वापस आएंगे। यह द डेली डिफ, अंडर द हुड है।

एक आइडम्पोटेंसी कुंजी क्या पहचानती है?

0:21 आइडम्पोटेंसी का अर्थ है कि एक ऑपरेशन को दोहराने का वही इच्छित प्रभाव होता है जो इसे एक बार करने का होता है। एक आइडम्पोटेंसी कुंजी एक तार्किक कार्रवाई को लेबल करती है। स्ट्राइप का एपीआई संस्करण एक रिट्री पर उस लेबल को पहचानता है और एक सहेजे गए जवाब को फिर से चलाता है। एक कॉफी खरीदने की कल्पना करें। स्ट्राइप आपके भुगतान अनुरोध को पूरा करता है, और जवाब घर लौटते समय खो जाता है, ग्राहक एक स्पिनर देखता है। उनके बैंक की अधिक रोमांचक व्याख्या हो सकती है। एक असुरक्षित निर्माण अनुरोध साइड इफेक्ट को दोहरा सकता है।

एक ही कुंजी रिट्री को कैसे सुरक्षित बनाती है?

0:45 पहले प्रयास से पहले एक अद्वितीय कुंजी संलग्न करें और इसे रिट्री के लिए रखें। यदि आपका एप्लिकेशन रीस्टार्ट होता है, तो उस कुंजी को अपने रिकॉर्ड में ऑपरेशन के साथ सुरक्षित रखें। स्ट्राइप के संस्करण एक एपीआई के लिए, एक बार एंडपॉइंट निष्पादन शुरू होने के बाद, पहले अनुरोध की स्थिति और बॉडी को सहेजा जाता है। उसी कुंजी और पैरामीटर को फिर से भेजें, और स्ट्राइप सहेजे गए जवाब को वापस कर देगा। कॉफी वहीं रहती है जबकि उसकी रसीद फिर से यात्रा करती है।

स्ट्राइप वास्तव में क्या बचाता है?

1:07 यहां स्ट्राइप की वास्तविक शब्दावली है। समान कुंजी के साथ रिट्री सहेजे गए जवाब को वापस करते हैं, जिसमें पांच सौ त्रुटियां भी शामिल हैं। दस्तावेज़ीकरण आपके आशावादी रूप से नामित रिट्री हेल्पर से अधिक काम करता है। ग्राहक फिर से टैप करता है। आपका ऐप तय करता है कि वह लंबित खरीद को फिर से शुरू करता है या एक और शुरू करता है। एक वास्तविक नई कॉफी को एक नई कुंजी मिलती है। प्रत्येक नेटवर्क रिट्री के लिए एक ताज़ा कुंजी सुरक्षा को विफल कर देती है।

1:27 समान कुंजी के साथ विभिन्न पैरामीटर बेमेल को ट्रिगर करते हैं।

अनुरोध बदलने पर क्या होता है?

1:30 यदि पैरामीटर सत्यापन में विफल हो जाते हैं, या उस कुंजी के साथ कोई अन्य अनुरोध अभी भी निष्पादित हो रहा है, तो स्ट्राइप उस प्रयास के लिए कोई आइडम्पोटेंट परिणाम नहीं बचाता है। उन अनुरोधों को फिर से आज़माया जा सकता है। एक रेसिंग अनुरोध को एक संघर्ष मिलता है। ये संस्करण एक नियम हैं। संस्करण दो अलग तरह से व्यवहार करता है। एक हेडर आपके सिस्टम में बिल्कुल एक बार डिलीवरी का वादा नहीं कर सकता है। ईमेल, इन्वेंट्री और आपके डेटाबेस को प्रत्येक को विफलता प्रबंधन की आवश्यकता है।

1:52 कुंजी अपने दस्तावेजित दायरे के भीतर ऑपरेशन की सुरक्षा करती है। स्ट्राइप संस्करण एक कुंजी को कम से कम चौबीस घंटे के लिए बनाए रखता है और उसके बाद

याद रखा गया परिणाम कब तक फिर से आज़माने के लिए सुरक्षित है?

1:59 उन्हें हटा सकता है। एक हटाई गई कुंजी एक नया अनुरोध निष्पादित कर सकती है। पहले दिन के भीतर अनसुलझे रिट्री को रखें। उससे आगे, रुकें और मूल परिणाम को सुलझाएं। सर्वर को सांस लेने की जगह देने के लिए एक्सपोनेंशियल बैकऑफ और जिटर का उपयोग करें। अन्यथा रिट्री एक जलती हुई कॉफी की दुकान के बाहर एक कतार बनाते हैं। स्ट्राइप की लाइब्रेरी रिट्री को संभालती हैं, लेकिन अपनी लाइब्रेरी के डिफ़ॉल्ट की जांच करें। वह चिपचिपी त्रुटि ही पकड़ है।

एक याद की गई त्रुटि वापस क्यों आती रह सकती है?

2:20 कनेक्टिविटी ठीक होने के बाद भी एक कैश की गई पांच सौ प्रतिक्रिया फिर से चलती रहती है। मूल ऑपरेशन ने साइड इफेक्ट उत्पन्न किए होंगे। ऑब्जेक्ट, डैशबोर्ड और वेबहुक का उपयोग करके इसके परिणाम को सुलझाएं। एक नई कुंजी कार्रवाई को दोहरा सकती है। यदि आप इसे सुनने के बजाय पढ़ना पसंद करेंगे, तो डिफ आपके इनबॉक्स में हर सुबह, thedailyiff.dev पर मुफ्त में आता है, लिंक नीचे है।

क्या मैं इस अनुबंध के साथ एक रिट्री बटन शिप करूंगा?

2:39 निर्णय, अंडर द हुड। शिप इट। मैं सीमित रिट्री और सुलह के साथ स्थिर कुंजी शिप करूंगा, ताकि ग्राहकों को आपके वितरित सिस्टम शिक्षा को वित्त पोषित किए बिना कॉफी मिल सके। और यही आज का डिफ है। मैं एक्सरिसी से निको हूँ। जिम्मेदारी से विलय करें।

स्रोत

  1. Idempotent requestsStripe Docs
  2. Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
  3. Advanced error handlingStripe Docs
  4. HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor

संबंधित वीडियो

under-the-hood · hi · 10 अक्टू॰ 2026

शॉपिफाई ने इन्वेंटरी आरक्षणों को MySQL में स्थानांतरित कर दिया

शॉपिफाई ने अपनी इन्वेंट्री आरक्षण प्रणाली को रेडिस से MySQL डेटाबेस में स्थानांतरित कर दिया, जिसमें पहले से ही इन्वेंट्री लेजर मौजूद था। व्यक्तिगत रूप से लॉक करने योग्य इकाई पंक्तियों का एक सीमित पूल

2:58 ↗
under-the-hood · hi · 24 सित॰ 2026

SAML, तह के नीचे: पत्र के अंदर का हस्ताक्षर

SAML आपको लगभग हर कार्य ऐप में लॉग इन करता है, और इसका हस्ताक्षर उस XML के अंदर रहता है जिस पर यह हस्ताक्षर करता है। तह के नीचे: ऐप, ब्राउज़र और पहचान प्रदाता के बीच लॉगिन प्रक्रिया, एक अभिकथन कैसा दि

3:02 ↗
under-the-hood · hi · 23 सित॰ 2026

जब एक मॉडल मर जाता है, अंदर ही अंदर

एक AI मॉडल मरता नहीं है — उसे बंद करने की तारीख मिलती है, और अगली सुबह, आपका API कॉल 404 लौटाता है: "मॉडल को अप्रचलित कर दिया गया है, यहाँ और जानें।" अंदर ही अंदर: चार-स्थिति वाली पाइपलाइन (सक्रिय → व

3:15 ↗
under-the-hood · hi · 21 सित॰ 2026

क्लाउड ने RSA-896 का गुणनखंड किया। RSA वास्तव में कैसे टूटता है

19 सितंबर को एंथ्रोपिक के एक इंजीनियर ने क्लाउड का उपयोग करके RSA-896 — एक 270-अंकीय चुनौती संख्या — का गुणनखंड किया, जो ओपन-सोर्स CADO-NFS छलनी का एक GPU पोर्ट है और दस दिनों में 2,048 निष्क्रिय GPUs

3:39 ↗