নির্ভরতা হ্যান্ডলিং


পাইথনে লেখা Cloud Functions জন্য ডিপেন্ডেন্সি নির্দিষ্ট করার দুটি উপায় আছে: pip প্যাকেজ ম্যানেজারের requirements.txt ফাইল ব্যবহার করা অথবা আপনার ফাংশনের সাথে লোকাল ডিপেন্ডেন্সিগুলো প্যাকেজ করা।

Pipfile/Pipfile.lock স্ট্যান্ডার্ড ব্যবহার করে ডিপেন্ডেন্সি স্পেসিফিকেশন সমর্থিত নয়। আপনার প্রজেক্টে এই ফাইলগুলো অন্তর্ভুক্ত করা উচিত নয়।

pip দিয়ে নির্ভরতা নির্দিষ্ট করা

পাইথনে ডিপেন্ডেন্সিগুলো pip দিয়ে পরিচালনা করা হয় এবং requirements.txt নামের একটি মেটাডেটা ফাইলে প্রকাশ করা হয়। এই ফাইলটি অবশ্যই main.py ফাইলের সাথে একই ডিরেক্টরিতে থাকতে হবে, যে ফাইলে আপনার ফাংশন কোড থাকে।

যখন আপনি আপনার ফাংশন ডেপ্লয় বা রিডেপ্লয় করেন, তখন ক্লাউড ফাংশনস requirements.txt ফাইলে ঘোষিত আপনার ডিপেন্ডেন্সিগুলোর সর্বশেষ সংস্করণ ডাউনলোড ও ইনস্টল করার জন্য `pip` ব্যবহার করে। requirements.txt ফাইলে প্রতিটি প্যাকেজের জন্য একটি করে লাইন থাকে। প্রতিটি লাইনে প্যাকেজের নাম এবং ঐচ্ছিকভাবে, অনুরোধকৃত সংস্করণটি উল্লেখ থাকে। আরও বিস্তারিত জানতে, requirements.txt রেফারেন্স দেখুন।

ডিপেন্ডেন্সি ভার্সন পরিবর্তনের কারণে আপনার বিল্ড যাতে প্রভাবিত না হয়, সেজন্য আপনার ডিপেন্ডেন্সি প্যাকেজগুলোকে একটি নির্দিষ্ট ভার্সনে পিন করে রাখার কথা বিবেচনা করতে পারেন।

নিম্নলিখিতটি requirements.txt ফাইলের একটি উদাহরণ:

functions-framework
requests==2.20.0
numpy

স্থানীয় নির্ভরতা প্যাকেজিং

আপনি আপনার ফাংশনের পাশাপাশি ডিপেন্ডেন্সিগুলোও প্যাকেজ ও ডেপ্লয় করতে পারেন। এই পদ্ধতিটি তখন কার্যকর হয়, যখন আপনার ডিপেন্ডেন্সিটি পিপ (pip) প্যাকেজ ম্যানেজারের মাধ্যমে পাওয়া যায় না অথবা আপনার ক্লাউড ফাংশনস এনভায়রনমেন্টের ইন্টারনেট অ্যাক্সেস সীমাবদ্ধ থাকে।

উদাহরণস্বরূপ, আপনি নিম্নলিখিতের মতো একটি ডিরেক্টরি কাঠামো ব্যবহার করতে পারেন:

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

এরপর আপনি নিম্নলিখিত import স্টেটমেন্টটি ব্যবহার করে localpackage থেকে যথারীতি কোডটি ইম্পোর্ট করতে পারবেন।

# Code in main.py
from localpackage import script

মনে রাখবেন যে এই পদ্ধতিতে কোনো setup.py ফাইল চালানো হবে না । যেসব প্যাকেজে এই ফাইলগুলো আছে, সেগুলো বান্ডল করা গেলেও Cloud Functions এ সঠিকভাবে নাও চলতে পারে।