डिपेंडेंसी हैंडल करना


इसमें लिखे गए Cloud Functions की डिपेंडेंसी तय करने के दो तरीके हैं Python: pip पैकेज मैनेजर के requirements.txt फ़ाइल या आपके फ़ंक्शन के साथ-साथ लोकल डिपेंडेंसी की पैकेजिंग.

Pipfile/Pipfile.lock मानक का इस्तेमाल करने वाले डिपेंडेंसी का ब्यौरा समर्थित नहीं. आपके प्रोजेक्ट में ये फ़ाइलें शामिल नहीं होनी चाहिए.

पीआईपी की मदद से डिपेंडेंसी तय करना

Python में डिपेंडेंसी को पीआईपी की मदद से मैनेज किया जाता है और मेटाडेटा फ़ाइल में इसकी जानकारी दी जाती है कॉल किया गया requirements.txt. यह फ़ाइल उसी डायरेक्ट्री में होनी चाहिए जिसमें main.py फ़ाइल है फ़ंक्शन कोड.

अपने फ़ंक्शन को डिप्लॉय या फिर से डिप्लॉय करने पर, Cloud Functions आपके वीडियो का सबसे नया वर्शन डाउनलोड और इंस्टॉल करने के लिए पीआईपी का इस्तेमाल करता है डिपेंडेंसी, जैसा कि requirements.txt फ़ाइल में बताया गया है. requirements.txt फ़ाइल में हर पैकेज के लिए एक लाइन है. हर लाइन में यह शामिल है पैकेज का नाम और वैकल्पिक रूप से, अनुरोध किया गया वर्शन. ज़्यादा जानकारी के लिए, यह देखें requirements.txt रेफ़रंस.

अपने बिल्ड पर डिपेंडेंसी वर्शन बदलने से होने वाले असर को रोकने के लिए, अपने डिपेंडेंसी पैकेज को किसी खास वर्शन में पिन करें.

यहां requirements.txt फ़ाइल का एक उदाहरण दिया गया है:

functions-framework
requests==2.20.0
numpy

फ़ंक्शन फ़्रेमवर्क सभी फ़ंक्शन के लिए ज़रूरी डिपेंडेंसी. हालांकि Cloud Functions फ़ंक्शन बनाने के बाद, इसे आपकी ओर से इंस्टॉल करता है, तो हमारा सुझाव है कि साफ़ तौर पर जानकारी देने के लिए, इसे साफ़ तौर पर डिपेंडेंसी के तौर पर शामिल किया जाए.

अगर आपके फ़ंक्शन निजी डिपेंडेंसी पर निर्भर करता है, तो हमारा सुझाव है कि आप अपनी निजी रजिस्ट्री के साथ functions-framework का डुप्लीकेट वर्शन बनाएं. मिरर शामिल करें functions-framework को आपके फ़ंक्शन पर निर्भरता के रूप में इंस्टॉल करने से बचने के लिए को सार्वजनिक इंटरनेट से निकाल दिया जाता है.

लोकल डिपेंडेंसी की पैकेजिंग

अपने फ़ंक्शन के साथ डिपेंडेंसी को पैकेज और डिप्लॉय भी किया जा सकता है. यह पीआईपी (पिक्चर में पिक्चर) की मदद से आपकी डिपेंडेंसी उपलब्ध नहीं होने पर, तरीका मददगार होता है या अगर आपके Cloud Functions एनवायरमेंट का इंटरनेट है, तो ऐक्सेस पर पाबंदी है.

उदाहरण के लिए, एक डायरेक्ट्री स्ट्रक्चर का इस्तेमाल करने के लिए, जैसे:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

इसके बाद, आम तौर पर localpackage से कोड को इंपोर्ट करने के लिए, इनका इस्तेमाल करें: import स्टेटमेंट.

# Code in main.py
from localpackage import script

ध्यान दें कि इस तरीके से, setup.py फ़ाइलें नहीं चलेंगी. उनके साथ पैकेज फ़ाइलों को अब भी बंडल किया जा सकता है, लेकिन हो सकता है कि ये Cloud Functions पर ठीक से न चलें.