2011-02-06 18 views
5

हाल ही में मैंने अपने Google ऐप इंजन प्रोजेक्ट पर सीमित स्टेजिंग का उपयोग करना शुरू कर दिया है। डेटा अभी भी सभी संस्करणों के बीच साझा किया गया है, लेकिन व्यवहार (विशेष रूप से उपयोगकर्ता का सामना करने वाला व्यवहार) अलग है।विशिष्ट ऐप संस्करण के रूप में जीएई क्रॉन नौकरियां कैसे चलाएं?

स्वाभाविक रूप से जब मैं कुछ अविश्वसनीय रूप से नया कार्यान्वित करता हूं तो यह केवल मेरे कोड के नवीनतम संस्करण पर चलता है और मुझे ऐसा नहीं लगता कि इसे पुराने संस्करणों में बैकपोर्ट किया जाना चाहिए।

इस नई कार्यक्षमता में से कुछ को समय-समय पर क्रॉन नौकरियों को चलाने की आवश्यकता होती है, लेकिन मैं एक समस्या का सामना कर रहा हूं। मैं नवीनतम कोड कॉल करने के लिए एक क्रॉन जॉब को चलाने के लिए है, लेकिन यह है कि क्या गूगल के प्रलेखन मुद्दे के बारे में क्या कहना है है:

Cron requests are always sent to the default version of the application. 

डिफ़ॉल्ट संस्करण सबसे पुराना है क्योंकि ग्राहक कोड है कि बाहर गया के पहले संस्करण उपयोगकर्ताओं के लिए भविष्य के सबूत नहीं थे और यह नहीं जानते कि किस एपीआई संस्करण को कॉल करना है।

तो मेरा सवाल यह है कि, मैं इस सीमा के आसपास कैसे हो सकता हूं और क्रॉन नौकरी कर सकता हूं जो एप्लिकेशन के डिफ़ॉल्ट संस्करण की बजाय नवीनतम कॉल करेगा?

उत्तर

3

आप एक अलग संस्करण पर डिफ़ॉल्ट रूप से चलाने के लिए क्रॉन नौकरियों को नहीं बदल सकते हैं।

आपके क्रॉन नौकरी को चलाने में कितना समय लगता है, इस पर निर्भर करते हुए कि आप अपनी क्रॉन जॉब स्क्रिप्ट को "http://latest.appname.appspot.com/cron_job_endpoint" पर URLFetch करने के लिए बदल सकते हैं।

यदि आप क्रॉन नौकरी अधिक समय तक चलने में 10 मिनट लगते हैं, तो मैं इसे इस तरह से डिजाइन करूंगा कि आप कार्य कतारों का उपयोग करके विभिन्न कार्यों को चेन कर सकें।

+0

विचार के लिए धन्यवाद, मैंने एक साधारण एपीआई बनाया जो मेटा-क्रॉन के रूप में कार्य करता है और उचित ऐप संस्करण पर वास्तविक क्रोनबॉज के यूआरएल को कॉल करता है। –

12

अब आप लक्ष्य टैग का उपयोग कर एक संस्करण निर्दिष्ट कर सकते हैं।

<target>version-2</target> 
+2

cron.yaml में, आप पंक्ति 'लक्ष्य: 2' जोड़ सकते हैं – hamx0r