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


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

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

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

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

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

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

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

functions-framework
requests==2.20.0
numpy

सभी फ़ंक्शन के लिए, Functions फ़्रेमवर्क का इस्तेमाल करना ज़रूरी है. फ़ंक्शन बनाने पर, 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 पर ठीक से न चलें.