2011-08-30 14 views
7

मैं एक गैर-तुच्छ जीएई ऐप बनाने की कोशिश कर रहा हूं और मुझे यकीन नहीं है कि क्रॉन जॉब, कार्य, बैकएंड या सभी का मिश्रण मुझे क्या उपयोग करने की ज़रूरत है अनुरोध समय-सीमा सीमा पर जीएई के HTTP अनुरोधों के लिए है।किसी ऐप के लिए कार्य, क्रॉन जॉब्स या बैकएंड

अलग चरणों मैं क्या करने की जरूरत हैं:

1) मैं 15,000 साइटों मैं एक नियमित समय पर से और किसी भी उपयोगकर्ता को बताए बिना डेटा खींचने के लिए की जरूरत के ऊपर है। साइटों की कुल संख्या स्थैतिक नहीं जा रही है, लेकिन वे सभी डेटास्टोर [टेबल 0] में सहेजे गए हैं, जिस पर वे पढ़ रहे हैं। अंतराल हर दिन 30 दिनों के रूप में नियमित रूप से भिन्न हो सकता है।

2) "खींचें" अनुसूची मानदंडों के अनुरूप चरण # 1 से प्रत्येक साइट के लिए, मुझे HTTP GET के माध्यम से डेटा प्राप्त करने की आवश्यकता है (फिर से, यह उन सभी या 2 या 3 साइटों के रूप में हो सकता है) । एक बार जब मैं साइट से प्रतिक्रिया प्राप्त कर लेता हूं, तो परिणाम को पार्स करें और डेटा को डेटास्टोर में [टेबल 1] के रूप में सहेजें।

3) हाल ही में डेटास्टोर में डाले गए सभी डेटा के लिए [तालिका 1] (उनके पास एक विशेष ध्वज होगा), मुझे कुछ अतिरिक्त प्रक्रिया करने के लिए किसी तृतीय पक्ष साइट पर अतिरिक्त HTTP अनुरोध जारी करने की आवश्यकता है। जैसे ही मुझे इस साइट से डेटा प्राप्त होता है, मैं डेटास्टोर में सभी प्रासंगिक जानकारी को किसी अन्य तालिका [तालिका 2] में संग्रहीत करता हूं।

4) जैसे ही डेटा उपलब्ध है और चरण # 3 से तैयार है, मुझे इसे सभी लेने और कुछ अतिरिक्त परिवर्तन करने और डेटास्टोर में मूल तालिका [तालिका 1] को अपडेट करने की आवश्यकता है।

मुझे यकीन नहीं है कि मुझे विभिन्न घटकों में से कौन सा उपयोग करने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि मैं जीएई के वेब अनुरोधों पर प्रतिक्रिया की समयसीमा के बिना काम के प्रत्येक टुकड़े को पूरा कर सकूं। क्रॉन नौकरियों और कार्यों द्वारा शुरू किए गए अनुरोधों के लिए, मेरा मानना ​​है कि आपको इसे पूरा करने के लिए 10 मिनट की अनुमति है, जबकि सामान्य उपयोगकर्ता द्वारा संचालित अनुरोधों को 30 सेकंड की अनुमति है।

उत्तर

3

GAE आपके उपयोग-मामले के लिए एक कठिन मंच है। लेकिन, चरम मासोकिज्म से, मैं कुछ इसी तरह का प्रयास कर रहा हूं। किसी भी लंबे समय से चल, आई/ओ संवेदनशील कार्यों को आप हो सकता है के लिए उन्हें का उपयोग करें (वेब-क्रॉलिंग, एक अच्छा उदाहरण है आप यह सोचते हैं -

  1. backends: तो यहाँ मेरी दो सेंट मेरा अनुभव अब तक के आधार पर कर रहे हैं, बाद में गणना-गहन प्रसंस्करण को रोक सकते हैं)।
  2. मैप्रिडस एपीआई - आंकड़े संग्रह, अनुक्रमण आदि जैसे गणना-गहन/समांतर नौकरियों के लिए उत्कृष्ट। हाल ही में, इस लाइब्रेरी में केवल एक मैपर कार्यान्वयन था, लेकिन हाल ही में Google ने एक इन-मेमोरी शफलर भी जारी किया जो कि नौकरियों के लिए अच्छा है लगभग 100 एमबी में फिट
  3. कार्य पंक्तियां - जब सबकुछ विफल रहता है :-)।
  4. क्रॉन - ज्यादातर आवधिक कार्यों को दूर करने के लिए - आप जिस संदर्भ में उन्हें निष्पादित करते हैं, वह आपके ऊपर है।

यह हो सकता है इतना है कि वे निर्धारित किया जा सकता अपने बैकएंड कार्यों डिजाइन करने के लिए एक अच्छा विचार है "दृश्यपटल" संदर्भ में कार्य कतारों का उपयोग कर (स्वयं, या शायद अपने वर्तमान कोटा उपयोग पूछताछ की), अगर आप अतिरिक्त दृश्यपटल हो सीपीयू चक्र

+1

मुझे उम्मीद है कि जीएई की बहुत अपमानजनक नहीं है। मुझे लगता है कि इसकी बाधाओं के बावजूद यह एक अच्छा मंच है - डिजाइनर योजना संसाधन खपत को और अधिक अच्छी तरह से मजबूर करता है। – tooringtest

0

बैकएंड बाहर आने से पहले मैंने जीएई छोड़ दिया, इसलिए उस पर टिप्पणी नहीं कर सकती। लेकिन, मुझे क्या किया कई बार किया गया था:

  • क्रॉन प्रक्रिया शुरू करने के लिए अनुसूचित
  • क्रॉन हैंडलर एक कार्य यूआरएल
  • कार्य डेटास्टोर से पहले आइटम (यूआरएल) पकड़ लेता है invokes, HTTP अनुरोध निष्पादित करता है, पर चल रही है डेटा, यूआरएल रिकॉर्ड को इस पर काम करने के रूप में अद्यतन करता है और फिर कार्य यूआरएल को आमंत्रित करता है।

तो क्रॉन मूल रूप से कार्यक्षेत्र को समय-समय पर जाग रहा है और जब तक यह कुछ रोक बिंदु तक पहुंच जाता है तब तक टास्क्यूयू लगातार दौड़ता है।

आप इसे मेरे सार्वजनिक GAE ऐप्स - https://github.com/mavenn/watchbots-gae-python में से किसी एक कार्रवाई में देख सकते हैं।

+1

आप इस काम को और अधिक समवर्ती रूप से करने में मदद के लिए कुछ चीजें भी कर सकते हैं, जैसे कि कार्य अगले कार्य को कॉल करता है और एक कर्सर पास करता है, इसलिए यह अंतिम बैच के बाद सीधे स्थिति में शुरू होता है। –

5

कार्य कतार सामान्य रूप से ऐसा करने का सबसे अच्छा तरीका है, लेकिन आप App Engine Pipeline API को देखना चाहते हैं, जो कि आप जिस तरह के वर्कफ़्लो के बारे में बात कर रहे हैं, उसके लिए डिज़ाइन किया गया है।

संबंधित मुद्दे