2011-05-24 19 views
5

बस सोच रहा है कि आप में से कोई भी इस पर आ गया है। मैं Google ऐप इंजन पर पाइथन मेल एपीआई के साथ खेल रहा हूं और मैंने एक ऐप बनाया है जो POST के माध्यम से एक संदेश निकाय और पता स्वीकार करता है, डेटास्टोर में एक इकाई बनाता है, फिर हर मिनट एक क्रॉन जॉब चलाया जाता है, 200 इकाइयों को पकड़ता है और भेजता है ईमेल बाहर, फिर इकाइयों को हटा देता है।Google ऐप इंजन लॉकिंग

मैंने 1500 ईमेल के साथ एक प्रयोग किया, डेटास्टोर में 1500 इकाइयां बनाई गईं और 1500 ईमेल भेजे गए। मैं फिर अपने आंकड़ों को देखता हूं और लगभग देखता हूं। कोटा से 45,000 प्राप्तकर्ताओं का उपयोग किया गया था, यह कैसे संभव है?

तो मेरा प्रश्न वास्तव में "प्राप्तकर्ता ईमेल किए गए" कोटा को किस बिंदु पर गिनता है? उस बिंदु पर जहां मैं मेल ऑब्जेक्ट बना सकता हूं या जब मैं वास्तव में send() करता हूं? मैं दूसरे की उम्मीद कर रहा था, लेकिन कोटा कुछ अलग दिखने लगते हैं। मैं मेल ऑब्जेक्ट को क्रॉन और कार्यों आदि के बीच पास करता हूं। किसी के पास इस पर कोई जानकारी है?

धन्यवाद।

अद्यतन: बाहर कर देता है मैं वास्तव में केवल 1500 की एक कतार ऐसा लगता है कि एक क्रॉन जॉब जब तक पिछले एक समाप्त हो गया है चलाता है और एक ही संस्थाओं के साथ बाहर काम करता है के साथ 45k ईमेल भेजना था। तो प्रश्न "मैं संस्थाओं को कैसे लॉक कर सकता हूं और यह सुनिश्चित कर सकता हूं कि ईमेल भेजने से पहले कोई भी उन्हें चुनता है"?

फिर से धन्यवाद!

+1

आपने यह कैसे देखा कि 1500 ईमेल भेजे गए थे? क्या आप सुनिश्चित हैं कि अगली नौकरी चलाने से पहले सभी 200 इकाइयां भेजी और हटा दी गईं? –

+0

@Gzezegorz अच्छा सवाल, पता चल जाएगा। – kovshenin

उत्तर

2

ईमेल ऑब्जेक्ट को तत्काल करना आपके "प्राप्तकर्ता ईमेल" कोटा के खिलाफ निश्चित रूप से नहीं गिना जाता है। अन्य ऐप इंजन सेवाओं की तरह, जब आप आरपीसी ट्रिगर करते हैं तो आप कोटा का उपभोग करते हैं, यानी send() पर कॉल करें।

यदि आप 1500 प्राप्तकर्ताओं को ईमेल करना चाहते हैं और ऐप इंजन का कहना है कि आपने 45,000 ईमेल किया है, तो आपके कोड में एक बग है।

+0

मैंने इसके बारे में सोचा, मैं यह देखने के लिए आज कुछ प्रयोग करूँगा कि मैं क्या गलत कर रहा हूं, उम्मीद है कि 2000 मुक्त बाधा तक नहीं पहुंच जाएगा;) – kovshenin

+0

एक अपडेट भेजा गया, आपकी प्रतिक्रिया के लिए धन्यवाद, प्रश्न बदल गया है;) – kovshenin

3

ईमेल भेजने के लिए कार्यों का उपयोग करें।

एक ऐसा कार्य बनाएं जो तर्क के रूप में कुंजी लेता है, उस कुंजी के लिए संग्रहीत इकाई को पुनर्प्राप्त करता है, फिर ईमेल भेजता है।

जब आपके हैंडलर को शरीर और पता प्राप्त होता है, तो अब आप जो करते हैं उसे स्टोर करें, फिर कार्य को अपने डेटास्टोर ऑब्जेक्ट की कुंजी को भेजने और पास करने के लिए कार्य करें ताकि यह पता चल सके कि किस ऑब्जेक्ट के लिए एक ईमेल भेजना है।

आप पाते हैं कि शरीर और पता इतना छोटा है कि आप उन्हें केवल कार्य के लिए तर्क के रूप में पास कर सकते हैं और कार्य को सीधे डेटास्टोर में कुछ भी स्टोर किए बिना ईमेल भेज सकते हैं।

यह भी लाभ है कि यदि आप किसी दिए गए समय (कोटा) में भेजे गए ईमेल की संख्या पर सीमा लागू करना चाहते हैं तो आप उस दर के साथ कार्य कतार स्थापित कर सकते हैं।

+0

हां , यह जाने का रास्ता है। आप डेटास्टोर में अपने मॉडल में कुछ स्टेटस फ़ील्ड जोड़ सकते हैं ताकि यह निर्धारित किया जा सके कि ईमेल कतारबद्ध है या नहीं, इसलिए जब भी क्रॉन जॉब भेजने के लिए नए ईमेल की जांच करता है तो आप उसी ईमेल को कतारबद्ध नहीं कर रहे हैं। –