दिलचस्प पोस्ट
स्वास्थ्यकैट पृष्ठभूमि डिलीवरी जब ऐप नहीं चल रहा है MySQL में कॉलम का नाम बदलने में त्रुटि Codesign का उपयोग कर एक OSX ऐप पर हस्ताक्षर करने का प्रयास करते हुए "उपयोगकर्ता इंटरैक्शन की अनुमति नहीं है" अनछुए त्रुटि: इनरिएन्ट उल्लंघन: खोजकंपनीटूट (…, … $ 110): तत्व ढूंढने में असमर्थ इसका मतलब यह है कि DOM अप्रत्याशित रूप से उत्परिवर्तित था क्या .key फ़ाइल से एक .पीएफएक्स में एक SSL प्रमाणपत्र को परिवर्तित करना संभव है? पायथन 2.6 में यूनिकोड_लिटरल्स का उपयोग करने वाला कोई मिला? कोको में यादृच्छिक अल्फ़ान्यूमेरिक स्ट्रिंग उत्पन्न करें जावा त्रुटि: "आपकी सुरक्षा सेटिंग्स ने स्थानीय अनुप्रयोग को चलाने से रोक दिया है" रेल 3 में बल्क डालें कैसे कार्यान्वित करें इंटरनेट कनेक्टिविटी की जांच करने के लिए एंड्रॉइड सेवा? मैं ब्लॉब से TEXT को MySQL में कैसे रूपांतरित कर सकता हूं? पायथन एसआर वर्दी यूनिकोड प्रकार फोंट के लिए उचित माइम प्रकार iPhone पर ऑडियो फ़ाइलें मर्ज करें एंड्रॉइड एसपी बनाम डीपी ग्रंथों – क्या 'पैमाने' समायोजित करेगा और समर्थन का दर्शन क्या है

जब मैं गैस में "नींद" करता हूँ तो क्या होता है? (निष्पादन समय सीमा समाधान)

इस के पीछे (मैं इतना स्वीकार नहीं करता …) मजाकिया सवाल यह है कि वास्तव में यह समझने के बिना इसका इस्तेमाल करने के बारे में एक वास्तविक प्रश्न है जो यह काम करता है।

पहले मेरे उपयोग के मामले का एक संक्षिप्त विवरण, यह सब एक दस्तावेज बांटे गए यूआईएप में साइडबार में दिखा रहा है:

जीएएस में लिखे गए एक मेल मर्ज एप्लिकेशन में मुझे दो सौ सैकड़ों दस्तावेजों को ईमेल द्वारा भेजना और भेजना होगा। 5 मिनट के निष्पादन समय सीमा को मारने के बिना एक बैच में संसाधित होने तक बहुत अधिक समय लग जाता है इसलिए मैंने कार्य पूरा करने के लिए कुछ अलग-अलग उपाय किए:

  1. जब मैं प्रक्रिया शुरू करते हैं और जब मैं सीमा के पास एक पूर्वनिर्धारित मान तक पहुँचता हूं, तो समय के स्टैम्प (स्क्रिप्टप्रॉपर्टीज़ में संग्रहीत) का उपयोग करते हैं, तो मैं वर्तमान मानों (संकेत, उपयोगी वार्स …) को संग्रहीत करता हूं और उपयोगकर्ता इंटरफ़ेस पर वापस लौटता हूं ताकि उपयोगकर्ता को जारी रखने के लिए कहा जा सके ( या नहीं)। यह बहुत अच्छी तरह से काम करता है, लेकिन पूरे कार्य को पूरा करने के लिए एक मानवीय कार्रवाई की आवश्यकता है।
  2. इसलिए मैं एक टाइलर ट्रिगर का उपयोग करके एक समाधान सेटअप करता हूं जो कि मैं पहली हैंडलर कॉल में बना देता हूं और इस ट्रिगर को डॉक्टर निर्माण / फ़ंक्शन भेजता है। यह भी अच्छी तरह से काम कर रहा है लेकिन फ़ंक्शन बुलाया गया ट्रिगर UI से बातचीत करने में सक्षम नहीं है क्योंकि ऐसा लगता है कि केवल हेन्डलर फ़ंक्शंस UI को अपडेट कर सकते हैं। समस्या यह है कि मैं प्रगति नहीं दिखा सकता है और न ही आसानी से दिखती है जब प्रक्रिया समाप्त हो जाती है।
  3. तब मुझे एक छोटा ऐप याद आया जो कुछ समय पहले ही मस्ती के लिए लिखा था: यह एक टाइमर था जिसने एक चेकबॉक्स को एक सर्वर हैंडलर ट्रिगर के रूप में प्रयोग किया था (पुराने गूगल फोरम पर रोमैम व्हायलैड ने बहुत पहले सुझाव दिया था) और यह कोशिश करने का फैसला किया मेरे मेल भेजने की प्रक्रिया में चाल चलाना

यह पूरी तरह से काम करता है, मैं 40 दस्तावेज़ बैचों को संसाधित करता है प्रत्येक कॉल (लगभग 3 मिनट के दौरान) फिर थोड़ी देर के लिए रोकें और जब तक यह पूरा हो जाए तब तक फिर से शुरू न करें। चेकबॉक से जुड़े सर्वर हैंडलर द्वारा प्रत्येक कॉल ट्रिगर किया जाता है, चेक बॉक्स ही हैंडलर फ़ंक्शन में बदल जाता है, इस तरह से अपना ट्रिगर इस तरह से बना देता है

मेरा प्रश्न (अंततः 😉 है: यह जानना कि पूरी प्रक्रिया 30 से 60 मिनट लग सकती है, यह कितना सही है? इन सर्वर हैंडलर फ़ंक्शन को कई प्रक्रिया के रूप में क्यों माना जाता है, क्योंकि वे फ़ंक्शन के अंदर ही बनाए जाते हैं?

मुझे आशा है कि मैं काफी स्पष्ट हूं, (जो मुझे संदेह है क्योंकि यह मेरे दिमाग में थोड़ा सा भ्रमित है 🙂

मैं घड़ी परीक्षण एप के कोड से नीचे जुड़ गया, जिससे मुझे यह विचार मिला, यह संभवतः चीजों को समझने में आसान होगा

function doGet() { var app = UiApp.createApplication().setTitle('Counter/Timer'); var Panel = app.createAbsolutePanel().setStyleAttribute('padding','35'); var counter = app.createHTML().setId('counter').setHTML('<B>Timer = wait</B>').setStyleAttribute('fontSize','40px');// set start display var clo = app.createTextBox().setName('clo').setId('clo').setValue('0').setVisible(false);//set start value in seconds var handler1 = app.createServerHandler('doSomething').addCallbackElement(Panel); var chk1 = app.createCheckBox('test1').addValueChangeHandler(handler1).setVisible(true).setId('chk1').setVisible(false); app.add(Panel.add(chk1).add(counter).add(clo)); chk1.setValue(true,true);// start the process return app} function doSomething(e) { var app = UiApp.getActiveApplication(); var xx = Number(e.parameter.clo); var disp = app.getElementById('counter') xx++ ;// replace by xx-- to count downwards if(xx>600){ // 10 minutes timeout for example disp.setHTML('<B> GAME OVER ;-)</B>').setStyleAttribute('fontSize','80px').setStyleAttribute('color','RED') return app } var cnt = app.getElementById('clo').setValue(xx) disp.setHTML('<B>'+T(xx)+'</B>') Utilities.sleep(1000); // instead of sleeping do something ! // below comes the "active" part var chk1 = app.getElementById('chk1').setValue(false,false) var chk1 = app.getElementById('chk1').setValue(true,true) return app; } function T(val){ var min = parseInt(val/60); var sec = val-(60*min); if(sec<10){sec='0'+sec} if(min<10){min='0'+min} var st = '> '+min+':'+sec return st } 

यहां छवि विवरण दर्ज करें

Solutions Collecting From Web of "जब मैं गैस में "नींद" करता हूँ तो क्या होता है? (निष्पादन समय सीमा समाधान)"

कथन है कि सर्वर हैंडलर फ़ंक्शन कॉल स्वतंत्र प्रक्रिया नहीं हैं क्योंकि वे "फ़ंक्शन के अंदर से बनाए गए हैं" बिल्कुल सही नहीं हैं।

आपने एक chk1 तत्व chk1 को एक सर्वर हैंडलर के साथ सेट किया doSomething जब भी चेकबॉक्स की जांच की जाती है, तब, एक इवेंट सर्वर पर भेजी जाती है। (… और आपकी स्क्रिप्ट उन घटनाओं को प्रत्येक chk1.setValue() कॉल के साथ पैदा कर रही है chk1.setValue() और आसपास के यूआई कोड आपके ब्राउज़र में चल रहा है – "शो स्रोत" पर क्लिक करें या एक्सप्लोरर का उपयोग करके यह देखने के लिए कि आपके ब्राउजर को क्या सेवा दी गई है Google सर्वर (चेतावनी – यह अस्पष्ट है। लेकिन आप अपनी कुछ स्ट्रिंग्स, और आपके क्लाइंट-साइड कोड से पहचान सकते हैं।)

क्लास ServerHandler के लिए दस्तावेज़ में हमें बताया गया है:

जब एक सर्वरहाँडलर लागू किया जाता है, तो यह फ़ंक्शन जिसका अर्थ है "स्क्रिप्ट" में एप स्क्रिप्ट सर्वर पर कॉल किया जाता है

यह आपके ऑपरेटिंग समय को बढ़ाने के लिए महत्वपूर्ण है: प्रत्येक प्रेषित ईवेंट परिणाम किसी नए ऑपरेटिंग संदर्भ में doSomething() आमंत्रण में doSomething() है – ऐसा लगता है कि आपने एक अलग ब्राउज़र में स्क्रिप्ट संपादक खोला है, और आपकी स्क्रिप्ट पर "रन" क्लिक किया है "ताजा" स्क्रिप्ट का पिछला चल के विभिन्न मूल्यों तक पहुंच नहीं है … लेकिन यह टाइमर सहित ऑपरेटिंग प्रतिबंधों का खुद भी सेट है

पुनश्च: आपको सुनिश्चित करना चाहिए कि सर्वर-साइड हैंडलर लॉक का उपयोग करके "थ्रेड सुरक्षित" है, क्योंकि आप साझा संसाधनों तक पहुंच रहे हैं जो कि doSomething() कॉलबैक के कई उदाहरणों तक पहुंचा जा सकता है। इसके लिए संबंधित, इस स्क्रिप्ट के साथ दूसरी सीमा को मारना संभव है:

स्क्रीनशॉट - त्रुटि

बस मज़े के लिए, मैंने टिप्पणी की। .setVisible(false) पर chk1 .setVisible(false) , इसलिए चेकबॉक्स दिखाई देगा। मैंने फिर से इसे कई दर्जन बार क्लिक किया समय प्रदर्शन समाप्त हो गया था, और अंत में ऊपर त्रुटि ऊपर popped। (मिनट बाद) यह एक कृत्रिम स्थिति है, ज़ाहिर है, लेकिन फिर भी एक त्रुटि राज्य जो आसानी से बचा है।

पी पी एस: मुझे आश्चर्य है कि क्या एक ही तकनीक का इस्तेमाल कई समांतर सर्वर-साइड हैंडल भेजने के लिए कर सकता है, और इस तरह पूरे काम को पूरा करने के लिए समय बीत चुका है?