के रूप में वह यह है कि क्या मैं अभी बहुत बड़ा वितरित अनुप्रयोगों के निर्माण के लिए उपयोग कर रहा हूँ मैं एक उदाहरण के रूप अजगर इस्तेमाल करेंगे देखो।
ट्विस्ट पायथन इनलाइनकॉलबैक या (थोड़ा उलझन) स्थगित जनरेटर शैलियों का उपयोग करके एक बहुत ही अनिवार्य शैली के लिए अनुमति देता है। ये विधियां आपको उन प्रक्रियाओं को लिखने की अनुमति देती हैं जो घटना संचालित कॉलबैक कोड का उपयोग करती हैं जो पढ़ने और समझने में बहुत आसान है। कार्यान्वयन आपके कार्य को आलसी अनुक्रम में बदल देता है जो स्थगित होने का अनुक्रम उत्पन्न करता है।
विशेष रूप से, आपको कॉलबैक फ़ंक्शंस/लैम्बडास/क्लोजर का गहरा घोंसला सेट सेट करने की आवश्यकता नहीं है, और इसके बजाय मनमाने ढंग से बिंदुओं पर ईवेंट लूप पर फ़ंक्शन का नियंत्रण प्राप्त कर सकता है। यदि आप चाहें तो आप मानसिक रूप से कोरआउट या सहकारी मल्टीटास्किंग के रूप में इसे फिर से लेबल कर सकते हैं। इससे काम हो जाता है। एक उदाहरण इस तरह (भद्दा deferredGenerator शैली का प्रयोग करके) होगा:
@defer.deferredGenerator
def foo(arg):
bar = nonBlockingFunction(foo)
baz = waitForDeferred(aFunctionThatReturnsADeferredToo(bar))
yield baz #Returns control to the event loop
output = baz.getResult() #This gets the output of aFunctionThat...Too above
yield output #This is how we return a result instead of using return
@defer.deferredGenerator
def aFunctionThatReturnsADeferredToo(put_bar_here):
"""Stuff happens here...."""
...etc...
यहाँ एक और पोस्ट कि inlineCallbacks विधि है, जो क्लीनर है पता चलता है, लेकिन अजगर 2.5 या नए (नहीं अर्थ Centos के तहत/RHEL 5 की आवश्यकता है श्रृंखला, जो मैं अपने ऐप के लिए उदास हूँ)। यदि आप इसका उपयोग कर सकते हैं तो ऐसा करें।
जैसा कि आप देख सकते हैं, यह पुराने स्कूल पायथन अनिवार्य सामान जैसा दिखता है और प्यार करता है, लेकिन घोंसला वाले कार्यों और भेड़ के बच्चे के बिना बनाए रखना आसान तरीका है। मैं अभी भी चाहता हूं कि अजगर के ब्लॉक हों।
डिबगिंग के लिए, आप अपने प्रारंभिक कोड में कहीं भी defer.setDebugging (True) कॉल का उपयोग करके ट्विस्ट रिएक्टर डीबगिंग चालू कर सकते हैं। यह मूल ट्रेसबैक संलग्न करेगा जो आपके कोड में एक अपवाद उठाता है, ताकि आप यह देख सकें कि वास्तव में त्रुटि कहां हुई है। उत्पादन शुरू करने से पहले बस सेटबैबिंग कथन को फिर से शुरू करना याद रखें, क्योंकि इसके परिणामस्वरूप अतिरिक्त आत्मनिरीक्षण की बड़ी मात्रा में परिणाम होता है (यदि आप पूरी तरह से भयभीत होना चाहते हैं तो इसे स्ट्रेस में देखें)।
विस्तार करने के लिए देखभाल? – keyle