बार-बार पूछे जाने वाले टेक्निकल सवाल¶
"शेड्यूल्ड ऐक्शन उस सटीक समय पर नहीं चलते जिसकी उम्मीद थी"¶
Odoo.sh प्लेटफ़ॉर्म पर, हम शेड्यूल्ड ऐक्शन के लिए सटीक चलने के समय की गारंटी नहीं दे सकते।
यह इस वजह से है क्योंकि एक ही सर्वर पर कई ग्राहक हो सकते हैं, और हमें हर ग्राहक के लिए सर्वर का उचित हिस्सा सुनिश्चित करना होगा। इसलिए शेड्यूल्ड ऐक्शन को रेगुलर Odoo सर्वर की तुलना में थोड़ा अलग तरीके से लागू किया जाता है, और सर्वोत्तम प्रयास नीति पर चलाया जाता है।
चेतावनी
किसी भी शेड्यूल्ड ऐक्शन के हर 5 मिनट से ज़्यादा बार चलने की उम्मीद न करें।
क्या शेड्यूल्ड ऐक्शन के संबंध में "सर्वोत्तम प्रथाएं" हैं?¶
Odoo.sh हमेशा शेड्यूल्ड ऐक्शन (*उर्फ़* क्रॉन) के निष्पादन समय को सीमित करता है। इसलिए, अपने खुद के क्रॉन विकसित करते समय आपको इस तथ्य को ध्यान में रखना होगा।
हम सलाह देते हैं कि:
आपके शेड्यूल्ड ऐक्शन को रिकॉर्ड के छोटे बैच पर काम करना चाहिए।
आपके शेड्यूल्ड ऐक्शन को हर बैच को प्रोसेस करने के बाद अपना काम कमिट करना चाहिए; इस तरह, अगर वे समय-सीमा से बाधित हो जाते हैं, तो फिर से शुरू करने की कोई ज़रूरत नहीं है।
आपके शेड्यूल्ड ऐक्शन आइडेमपोटेंट होने चाहिए: अगर वे उम्मीद से ज़्यादा बार शुरू होते हैं तो उन्हें साइड-इफ़ेक्ट नहीं देने चाहिए।
जब आईपी एड्रेस बदलता है तो मैं टास्क को ऑटोमैटिकली कैसे कर सकता हूँ?¶
Odoo.sh प्रोजेक्ट एडमिनिस्ट्रेटर को आईपी एड्रेस बदलाव की सूचना देता है। इसके अतिरिक्त, जब प्रॉडक्शन इंस्टेंस का आईपी एड्रेस बदलता है, तो पाथ /_odoo.sh/ip-change पर एक HTTP GET अनुरोध किया जाता है जिसमें नया आईपी एड्रेस क्वेरी स्ट्रिंग पैरामीटर (new) के रूप में शामिल होता है, साथ ही पिछला आईपी एड्रेस अतिरिक्त पैरामीटर (old) के रूप में शामिल होता है।
यह मैकेनिज़्म आईपी एड्रेस बदलाव के जवाब में कस्टम एक्शन लागू करने की अनुमति देता है (जैसे ईमेल भेजना, फ़ायरवॉल एपीआई से संपर्क करना, डेटाबेस ऑब्जेक्ट कॉन्फ़िगर करना, आदि)
सुरक्षा कारणों से, /_odoo.sh/ip-change रूट केवल प्लेटफ़ॉर्म द्वारा ही आंतरिक रूप से एक्सेस किया जा सकता है और किसी अन्य माध्यम से एक्सेस करने पर 403 रिस्पॉन्स देता है।
यहाँ एक स्यूडो-इंप्लिमेंटेशन उदाहरण है:
class IPChangeController(http.Controller):
@http.route('/_odoo.sh/ip-change', auth='public')
def ip_change(self, old=None, new=None):
_logger.info("IP address changed from %s to %s", old, new)
# Then perform whatever action required for your use case, e.g., update an
# ir.config_parameter, send an email, contact an external firewall service's API, ...
return 'ok'