1. ওভারভিউ
কোডল্যাবগুলির সার্ভারলেস মাইগ্রেশন স্টেশন সিরিজ (স্ব-গতিসম্পন্ন, হ্যান্ড-অন টিউটোরিয়াল) এবং সম্পর্কিত ভিডিওগুলির লক্ষ্য হল Google ক্লাউড সার্ভারহীন বিকাশকারীদের তাদের অ্যাপ্লিকেশনগুলিকে এক বা একাধিক মাইগ্রেশনের মাধ্যমে গাইড করে আধুনিকীকরণ করতে সাহায্য করা, প্রাথমিকভাবে উত্তরাধিকার পরিষেবাগুলি থেকে দূরে সরে যাওয়া৷ এটি করা আপনার অ্যাপগুলিকে আরও বহনযোগ্য করে তোলে এবং আপনাকে আরও বিকল্প এবং নমনীয়তা দেয়, যা আপনাকে ক্লাউড পণ্যগুলির একটি বিস্তৃত পরিসরের সাথে একীভূত করতে এবং অ্যাক্সেস করতে এবং আরও সহজে নতুন ভাষা প্রকাশগুলিতে আপগ্রেড করতে সক্ষম করে৷ প্রাথমিকভাবে প্রথম দিকের ক্লাউড ব্যবহারকারীদের উপর ফোকাস করার সময়, প্রাথমিকভাবে অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড এনভায়রনমেন্ট) ডেভেলপারদের, এই সিরিজটি ক্লাউড ফাংশন এবং ক্লাউড রানের মতো অন্যান্য সার্ভারহীন প্ল্যাটফর্মগুলিকে অন্তর্ভুক্ত করার জন্য যথেষ্ট বিস্তৃত, বা অন্য কোথাও প্রযোজ্য হলে।
এই কোডল্যাবটি আপনাকে মডিউল 1 কোডল্যাব থেকে নমুনা অ্যাপে অ্যাপ ইঞ্জিন মেমক্যাশে অন্তর্ভুক্ত এবং ব্যবহার করতে শেখায়। আমরা এই মডিউল 12 টিউটোরিয়ালে মেমক্যাশের ব্যবহার যোগ করি তারপর মডিউল 13-এর পরবর্তী ক্লাউড মেমোরিস্টোরে স্থানান্তরিত করি ।
আপনি কিভাবে শিখবেন
- App Engine Memcache API/লাইব্রেরি ব্যবহার করুন
- একটি মৌলিক পাইথন 2 ফ্লাস্ক অ্যাপ ইঞ্জিন NDB অ্যাপে ক্যাশিং যোগ করুন
আপনি কি প্রয়োজন হবে
- একটি সক্রিয় GCP বিলিং অ্যাকাউন্ট সহ একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প৷
- মৌলিক পাইথন দক্ষতা
- সাধারণ লিনাক্স কমান্ডের কাজের জ্ঞান
- অ্যাপ ইঞ্জিন অ্যাপ্লিকেশানগুলি বিকাশ এবং স্থাপন করার প্রাথমিক জ্ঞান
- একটি কার্যকরী মডিউল 1 অ্যাপ ইঞ্জিন অ্যাপ ( এর কোডল্যাব সম্পূর্ণ করুন [প্রস্তাবিত] বা রেপো থেকে অ্যাপটি অনুলিপি করুন)
সমীক্ষা
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
পাইথনের সাথে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. পটভূমি
অ্যাপ ইঞ্জিন মেমক্যাশে থেকে স্থানান্তরিত করার জন্য, মডিউল 1 কোডল্যাবের ফলে বিদ্যমান ফ্লাস্ক এবং অ্যাপ ইঞ্জিন NDB অ্যাপে এর ব্যবহার যোগ করুন। নমুনা অ্যাপটি ব্যবহারকারীর কাছে সবচেয়ে সাম্প্রতিক দশটি ভিজিট প্রদর্শন করে। যদি একই ব্যবহারকারী তাদের ব্রাউজার রিফ্রেশ করে, তাহলে ক্রমাগত নতুন ভিজিট এন্টিটি তৈরি করা এবং ডেটাস্টোর থেকে সাম্প্রতিকতম ভিজিটগুলি আনার জন্য এটি সর্বোত্তম নয়, তাই আমরা সেই সাম্প্রতিক ভিজিটগুলিকে ক্যাশে করতে যাচ্ছি৷
যদি একই ভিজিটর পৃষ্ঠায় আঘাত করে, সেই ভিজিটগুলি ক্যাশে থেকে ফেরত দেওয়া হয়। যদি কোনও নতুন ব্যবহারকারী সাইটটি পরিদর্শন করে বা এক ঘন্টা অতিবাহিত হয়, ক্যাশেটি ফ্লাশ করা হয় এবং সাম্প্রতিকতম এন্ট্রিগুলির সাথে প্রতিস্থাপিত হয় (নতুন ভিজিট নিবন্ধিত করার কথা উল্লেখ না করে)৷ এই অ্যাপ ইঞ্জিন মেমক্যাশে ইন্টিগ্রেশন প্রয়োগ করা হলে, আমরা এটিকে পরবর্তী (মডিউল 13) কোডল্যাবে ক্লাউড মেমোরিস্টোরে স্থানান্তর করতে পারি।
এই টিউটোরিয়ালে নিম্নলিখিত পদক্ষেপগুলি রয়েছে:
- সেটআপ/প্রিওয়ার্ক
- কনফিগারেশন আপডেট করুন
- অ্যাপ্লিকেশন কোড পরিবর্তন করুন
3. সেটআপ/প্রিওয়ার্ক
আমরা টিউটোরিয়ালের মূল অংশে যাওয়ার আগে, আসুন আমাদের প্রকল্প সেট আপ করি, কোড পাই, তারপর বেসলাইন অ্যাপটি স্থাপন করি যাতে আমরা জানি যে আমরা কাজের কোড দিয়ে শুরু করেছি।
1. সেটআপ প্রকল্প
আপনি যদি মডিউল 1 কোডল্যাব সম্পূর্ণ করেন, আমরা সেই একই প্রকল্প (এবং কোড) পুনরায় ব্যবহার করার পরামর্শ দিই। বিকল্পভাবে, আপনি একটি একেবারে নতুন প্রকল্প তৈরি করতে পারেন বা অন্য একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে পারেন। প্রজেক্টের একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে এবং অ্যাপ ইঞ্জিন চালু আছে তা নিশ্চিত করুন।
2. বেসলাইন নমুনা অ্যাপ পান
এই কোডল্যাবের পূর্বশর্তগুলির মধ্যে একটি হল একটি কার্যকরী মডিউল 1 নমুনা অ্যাপ। আপনার যদি এটি না থাকে তবে এখানে এগিয়ে যাওয়ার আগে যেকোন একটি টিউটোরিয়াল (উপরের লিঙ্কগুলি) সম্পূর্ণ করুন। অন্যথায় আপনি যদি ইতিমধ্যেই এর বিষয়বস্তুগুলির সাথে পরিচিত হন, তাহলে আপনি নীচের মডিউল 1 কোড দিয়ে শুরু করতে পারেন।
আপনি আপনার বা আমাদের ব্যবহার করুন না কেন, মডিউল 1 কোড যেখানে আমরা শুরু করব। এই কোডল্যাবটি আপনাকে প্রতিটি ধাপের মধ্য দিয়ে নিয়ে যায়, মডিউল 11 রেপো ফোল্ডারে (ফিনিশ) যা আছে তার সাথে সাদৃশ্যপূর্ণ কোড দিয়ে শেষ করে।
- শুরু: মডিউল 1 ফোল্ডার (পাইথন 2)
- ফিনিশ: মডিউল 12 ফোল্ডার (পাইথন 2)
- সম্পূর্ণ রেপো (ক্লোন করতে বা জিপ ফাইল ডাউনলোড করতে)
মডিউল 1 স্টার্টিং ফাইলের ডিরেক্টরি (আপনার বা আমাদের) এইরকম হওয়া উচিত:
$ ls README.md main.py templates app.yaml requirements.txt
3. (পুনরায়) বেসলাইন অ্যাপ স্থাপন করুন
এখন চালানোর জন্য আপনার অবশিষ্ট প্রিওয়ার্ক পদক্ষেপগুলি:
-
gcloud
কমান্ড-লাইন টুলের সাথে নিজেকে পুনরায় পরিচিত করুন -
gcloud app deploy
সাথে নমুনা অ্যাপটি পুনরায় স্থাপন করুন - অ্যাপটি অ্যাপ ইঞ্জিনে সমস্যা ছাড়াই চলে তা নিশ্চিত করুন
একবার আপনি সফলভাবে এই পদক্ষেপগুলি সম্পাদন করেছেন এবং আপনার ওয়েব অ্যাপটি কাজ করে দেখেছেন (নীচের মতো আউটপুট সহ), আপনি আপনার অ্যাপে ক্যাশিংয়ের ব্যবহার যোগ করতে প্রস্তুত।
4. কনফিগারেশন আপডেট করুন
স্ট্যান্ডার্ড অ্যাপ ইঞ্জিন কনফিগারেশন ফাইলে কোনো পরিবর্তনের প্রয়োজন নেই ( app.yaml
, requirements.txt
, appengine_config.py
)।
5. অ্যাপ্লিকেশন ফাইলগুলি পরিবর্তন করুন
যেহেতু আমরা শুধুমাত্র একটি অ্যাপ ইঞ্জিন এপিআই যোগ করছি, এতে কোনো বাহ্যিক প্যাকেজ জড়িত নেই, মানে কোনো কনফিগারেশন ফাইল ( app.yaml
, requirements.txt
, appengine_config.py
) আপডেট করার প্রয়োজন নেই। শুধুমাত্র একটি অ্যাপ্লিকেশন ফাইল আছে, main.py
, তাই এই বিভাগে সমস্ত পরিবর্তন শুধুমাত্র সেই ফাইলটিকে প্রভাবিত করে।
আমদানি
সবচেয়ে গুরুত্বপূর্ণ ধাপ হল Memcache লাইব্রেরি, google.appengine.api.memcache
আমদানি করা। যেহেতু আমরা এক ঘন্টার জন্য সবচেয়ে সাম্প্রতিক ভিজিটগুলি ক্যাশে করতে যাচ্ছি, চলুন এক ঘন্টায় সেকেন্ডের সংখ্যার জন্য একটি ধ্রুবক যোগ করি। নীচে আপনার কোড আগে এবং এই পরিবর্তনের মত দেখায়:
আগে:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
পরে:
from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb
app = Flask(__name__)
HOUR = 3600
Memcache সমর্থন সহ ক্যাশিং যোগ করুন
সবচেয়ে উল্লেখযোগ্য পরিবর্তন হল আমাদের অ্যাপ্লিকেশনে ক্যাশিংয়ের ব্যবহার যোগ করা। আরও নির্দিষ্টভাবে, আমাদের অতি সাম্প্রতিক ভিজিটগুলি ক্যাশে করা উচিত, ক্যাশে করা ভিজিটগুলি উপলব্ধ কিনা তা পরীক্ষা করা উচিত এবং আমাদের পরিকল্পনা অনুসারে যতটা সম্ভব ক্যাশে করা ফলাফলগুলি ব্যবহার করার চেষ্টা করা উচিত। আমাদের লক্ষ্য পূরণ করতে অ্যাপটি এই পদক্ষেপগুলি গ্রহণ করবে:
- বর্তমান ভিজিট সেট করুন এবং এটি
visitor
কল করুন - ক্যাশে থেকে সাম্প্রতিকতম
visits
আনার চেষ্টা করুন৷ - যদি ক্যাশে খালি থাকে বা সাম্প্রতিক ভিজিটর (
visits[0]['visitor']
) বর্তমানvisitor
থেকে আলাদা হয় : এই নতুন ভিজিটটি সঞ্চয় করুন, সাম্প্রতিক ভিজিটগুলি আনুন এবং এক ঘন্টার জন্য ক্যাশে করুন। - ওয়েব টেমপ্লেটের মাধ্যমে ব্যবহারকারীর
visits
প্রদর্শন করুন
এই আপডেটগুলির সাথে আগে এবং পরে এখানে রয়েছে:
আগে:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
visits = fetch_visits(10)
return render_template('index.html', visits=visits)
পরে:
@app.route('/')
def root():
'main application (GET) handler'
# check for (hour-)cached visits
ip_addr, usr_agt = request.remote_addr, request.user_agent
visitor = '{}: {}'.format(ip_addr, usr_agt)
visits = memcache.get('visits')
# register visit & run DB query if cache empty or new visitor
if not visits or visits[0]['visitor'] != visitor:
store_visit(ip_addr, usr_agt)
visits = list(fetch_visits(10))
memcache.set('visits', visits, HOUR) # set() not add()
return render_template('index.html', visits=visits)
এখানে যে পরিবর্তনগুলি করা হয়েছিল তার একটি সচিত্র উপস্থাপনা:
এটি মডিউল 1 নমুনা অ্যাপে অ্যাপ ইঞ্জিন memcache
ব্যবহার যোগ করার জন্য প্রয়োজনীয় সমস্ত পরিবর্তনের সমাপ্তি ঘটায়। আসুন এই অ্যাপটি কাজ করে দেখতে এটি তৈরি এবং স্থাপন করি!
6. সারাংশ/পরিষ্কার
এই বিভাগটি এই কোডল্যাবটিকে অ্যাপ স্থাপন করে, যাচাই করে এটিকে উদ্দেশ্য করে এবং যে কোনো প্রতিফলিত আউটপুটে কাজ করে। অ্যাপ্লিকেশান যাচাইকরণের পরে, যেকোন পরিচ্ছন্নতার পদক্ষেপগুলি সম্পাদন করুন এবং পরবর্তী পদক্ষেপগুলি বিবেচনা করুন৷
প্রয়োগ এবং আবেদন যাচাই
gcloud app deploy
এর সাথে আপনার অ্যাপ পুনরায় স্থাপন করুন এবং অ্যাপটি কাজ করছে তা নিশ্চিত করুন। আপনার কোড এখন ফিনিশ, মডিউল 12 ফোল্ডারে যা আছে তার সাথে মেলে। আউটপুটটি মডিউল 1 অ্যাপের অনুরূপ হওয়া উচিত যা আপনি আগে স্থাপন করেছেন:
আমরা যা করেছি তা হল একই ব্যবহারকারীর জন্য ব্যবহারকারীর অভিজ্ঞতার গতি বাড়ানো। যখন সেগুলি রিফ্রেশ হয়, তখন আপনি সরাসরি ক্যাশে থেকে ফলাফলগুলি পেতে পারেন, যা কোনও নতুন ভিজিট তৈরি করে না বা ডেটাস্টোর নিয়ে আসে না৷
আমাদের নমুনা অ্যাপ্লিকেশনে অ্যাপ ইঞ্জিন memcache
পরিষেবার ব্যবহার যোগ করার জন্য মডিউল 12 কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন। আপনার কাছে এখন বোনাস ধাপে এই পাইথন 2 অ্যাপটিকে পাইথন 3 এ পোর্ট করার বিকল্প রয়েছে।
পরিষ্কার করুন
সাধারণ
আপনি যদি আপাতত কাজ শেষ করে থাকেন, তাহলে বিলিং এড়াতে আমরা আপনাকে আপনার অ্যাপ ইঞ্জিন অ্যাপটি নিষ্ক্রিয় করার পরামর্শ দিই। তবে আপনি যদি আরও কিছু পরীক্ষা বা পরীক্ষা করতে চান, অ্যাপ ইঞ্জিন প্ল্যাটফর্মের একটি বিনামূল্যের কোটা রয়েছে, এবং যতক্ষণ না আপনি সেই ব্যবহারের স্তরটি অতিক্রম না করেন, আপনাকে চার্জ করা উচিত নয়। এটি গণনার জন্য, তবে প্রাসঙ্গিক অ্যাপ ইঞ্জিন পরিষেবাগুলির জন্যও চার্জ হতে পারে, তাই আরও তথ্যের জন্য এর মূল্য পৃষ্ঠাটি দেখুন৷ যদি এই স্থানান্তরের সাথে অন্যান্য ক্লাউড পরিষেবা জড়িত থাকে, তবে সেগুলি আলাদাভাবে বিল করা হবে৷ উভয় ক্ষেত্রে, প্রযোজ্য হলে, নীচের "এই কোডল্যাবের জন্য নির্দিষ্ট" বিভাগটি দেখুন।
সম্পূর্ণ প্রকাশের জন্য, অ্যাপ ইঞ্জিনের মতো একটি Google ক্লাউড সার্ভারবিহীন গণনা প্ল্যাটফর্মে স্থাপন করা সামান্য বিল্ড এবং স্টোরেজ খরচ বহন করে। ক্লাউড স্টোরেজের মতো ক্লাউড বিল্ডের নিজস্ব ফ্রি কোটা রয়েছে। সেই ছবির সঞ্চয়স্থান সেই কোটার কিছু ব্যবহার করে। যাইহোক, আপনি এমন একটি অঞ্চলে বাস করতে পারেন যেখানে এই ধরনের বিনামূল্যের স্তর নেই, তাই সম্ভাব্য খরচ কমাতে আপনার স্টোরেজ ব্যবহার সম্পর্কে সচেতন থাকুন। নির্দিষ্ট ক্লাউড স্টোরেজ "ফোল্ডার" আপনার পর্যালোচনা করা উচিত:
-
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/images
-
console.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com
- উপরের সঞ্চয়স্থানের লিঙ্কগুলি আপনার
PROJECT_ID
এবং *LOC
*করণের উপর নির্ভর করে, উদাহরণস্বরূপ, "us
" যদি আপনার অ্যাপটি USA তে হোস্ট করা হয়৷
অন্যদিকে, আপনি যদি এই অ্যাপ্লিকেশন বা অন্যান্য সম্পর্কিত মাইগ্রেশন কোডল্যাবগুলি চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, তাহলে আপনার প্রকল্পটি বন্ধ করুন ৷
এই কোডল্যাবের জন্য নির্দিষ্ট
নীচে তালিকাভুক্ত পরিষেবাগুলি এই কোডল্যাবের জন্য অনন্য৷ আরও তথ্যের জন্য প্রতিটি পণ্যের ডকুমেন্টেশন পড়ুন:
- অ্যাপ ইঞ্জিন মেমক্যাশ পরিষেবা দুটি ভিন্ন স্বাদে আসে, প্রতিটির নিজস্ব মূল্য কাঠামো সহ, তাই আপনাকে সেই ব্যবহার ট্র্যাক করতে হবে কারণ এটি বিলিং সম্পর্কিত।
- অ্যাপ ইঞ্জিন ডেটাস্টোর পরিষেবাটি ক্লাউড ডেটাস্টোর (ডেটাস্টোর মোডে ক্লাউড ফায়ারস্টোর) দ্বারা সরবরাহ করা হয় যার একটি বিনামূল্যের স্তর রয়েছে; আরো তথ্যের জন্য এর মূল্য পৃষ্ঠা দেখুন।
পরবর্তী পদক্ষেপ
বিবেচনা করার জন্য পরবর্তী যৌক্তিক স্থানান্তরটি মডিউল 13 -এ কভার করা হয়েছে, যেটি ডেভেলপারদের দেখায় কিভাবে অ্যাপ ইঞ্জিন memcache
পরিষেবা থেকে ক্লাউড মেমোরিস্টোরে স্থানান্তর করা যায়। এই স্থানান্তরগুলি সমস্ত ঐচ্ছিক এবং ব্যবহারকারীদের জন্য উপলব্ধ যারা তাদের অ্যাপ্লিকেশন আধুনিকীকরণের জন্য বিভিন্ন পদক্ষেপ নিতে চান৷ ক্লাউড মেমোরিস্টোর পরিষেবাটি অনেক কারণে অ্যাপ ইঞ্জিনের memcache
একটি উল্লেখযোগ্য আপগ্রেড:
- ক্লাউড মেমোরিস্টোর সার্ভারহীন নয়। এর মানে হল যে আপনাকে ক্যাশের জন্য একটি সার্ভার বরাদ্দ করতে হবে। ক্লাউড মেমোরিস্টোরেও একটি বিনামূল্যের স্তর নেই। এই উভয় কারণই খরচের উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে।
- ক্লাউড মেমোরিস্টোর বিভিন্ন অন্তর্নিহিত স্টোরেজ মেকানিজম (ক্যাশিং ইঞ্জিন), রেডিস এবং মেমক্যাচেডের একজোড়া সমর্থন করে।
- ক্লাউড মেমোরিস্টোরে (রেডিসের জন্য) অ্যাপ ইঞ্জিন মেমক্যাশের চেয়ে অনেক বেশি সমৃদ্ধ এবং আরও গভীর বৈশিষ্ট্য রয়েছে।
- ক্লাউড মেমোরিস্টোর ব্যবহার করতে, আপনাকে অবশ্যই একটি ক্লাউড মেমোরিস্টোর সার্ভার সেট আপ করতে হবে, এটিকে একটি Google ক্লাউড ভিপিসি নেটওয়ার্কে যুক্ত করতে হবে, তারপর আপনার অ্যাপ ইঞ্জিন অ্যাপটিকে আপনার মেমোরিস্টোর সার্ভারের সাথে যোগাযোগ করতে সেই নেটওয়ার্কটি ব্যবহার করতে হবে৷
আপনি যদি ক্লাউড মেমোরিস্টোর থেকে উপলব্ধ সমস্ত বৈশিষ্ট্যের প্রয়োজন মনে না করেন বা খরচের উপর এর প্রভাব সম্পর্কে উদ্বিগ্ন হন, তাহলে আপনি অ্যাপ ইঞ্জিন মেমক্যাশে থাকতে পারবেন।
মডিউল 13 এর বাইরে ক্লাউড এনডিবি এবং ক্লাউড ডেটাস্টোর, বা ক্লাউড টাস্কের মতো অন্যান্য সম্ভাব্য স্থানান্তরগুলির একটি সম্পূর্ণ সংখ্যা। এছাড়াও ক্লাউড রান এবং ক্লাউড ফাংশনে ক্রস-প্রোডাক্ট মাইগ্রেশন রয়েছে। আপনি মাইগ্রেশন রেপোতে সেগুলি সবই পাবেন।
আরেকটি সম্ভাব্য পরবর্তী ধাপ হল পাইথন 3-এ পোর্ট করা, যা একটি ঐচ্ছিক পদক্ষেপ হিসেবে পরবর্তী বিভাগে কভার করা হয়েছে।
7. বোনাস: Python 3-এ মাইগ্রেশন
ওভারভিউ
এই বিভাগে ঐচ্ছিক বোনাস বিষয়বস্তু রয়েছে যা মডিউল 12 অ্যাপ্লিকেশনটি স্থানান্তর করে যা আমরা এইমাত্র পাইথন 3-এ শেষ করেছি।
সরলীকরণ app.yaml
Python 3 রানটাইমের একটি সুবিধা হল app.yaml
উল্লেখযোগ্যভাবে সরলীকৃত করা যেতে পারে।
আগে:
মডিউল 12 এর উপসংহারে app.yaml
এ যা আছে তা নীচে দেওয়া হল:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
যেহেতু Python 3 রানটাইমের জন্য ওয়েব ফ্রেমওয়ার্কের নিজস্ব রাউটিং প্রয়োজন, তাই app.yaml
এর সমস্ত রুট হ্যান্ডলারকে auto
পরিবর্তন করতে হবে। যদি কোনও স্ট্যাটিক ফাইল পরিবেশিত না হয়, ব্যবহারকারীরা সম্পূর্ণ handlers:
বিভাগ। এছাড়াও, threadsafe
এবং api_version
উভয়ই অবমূল্যায়িত করা হয়েছে ।
পরে:
এইমাত্র বর্ণিত প্রয়োজনীয় পরিবর্তনগুলির সাথে, এটি হল Python 3 এর প্রতিস্থাপন app.yaml
:
runtime: python39
app_engine_apis: true
শুধুমাত্র একটি লাইন যার ব্যাখ্যা প্রয়োজন তা হল app_engine_apis: true
। যখন লিগ্যাসি অ্যাপ ইঞ্জিন পরিষেবাগুলি 2021 সালে দ্বিতীয় প্রজন্মের রানটাইমগুলির জন্য উপলব্ধ হয় , তখন Python 3 সহ কিছু রানটাইমগুলিতে ndb
, taskqueue
, এবং memcache
এর মতো APIগুলি অ্যাক্সেস করতে অতিরিক্ত বুটস্ট্র্যাপিংয়ের প্রয়োজন হয়৷ কনফিগারেশনের এই লাইনটি সেই উদ্দেশ্যে কাজ করে।
Requiments.txt আপডেট করুন
requirements.txt
এ মূল API-এর আরেকটি বুটস্ট্র্যাপিং প্রয়োজন: নতুন অ্যাপ ইঞ্জিন SDK-এ অ্যাক্সেস অবশ্যই অন্তর্ভুক্ত করতে হবে।
আগে:
মডিউল 12 এর উপসংহারে app.yaml
এ যা আছে তা নীচে দেওয়া হল:
flask
পরে:
কেবল অ্যাপ ইঞ্জিন পাইথন SDK যোগ করুন এবং আপনার নিম্নলিখিতগুলি থাকা উচিত:
flask
appengine-python-standard
appengine_config.py এবং lib মুছুন
নেক্সট জেনারেশন অ্যাপ ইঞ্জিন রানটাইম থার্ড-পার্টি প্যাকেজ ব্যবহার পুনর্গঠন:
- অন্তর্নির্মিত লাইব্রেরিগুলি হল যেগুলি Google দ্বারা যাচাই করা হয়েছে এবং অ্যাপ ইঞ্জিন সার্ভারগুলিতে উপলব্ধ করা হয়েছে, সম্ভবত তাদের মধ্যে C/C++ কোড রয়েছে যা বিকাশকারীদের ক্লাউডে স্থাপন করার অনুমতি দেওয়া হয় না—এগুলি আর 2য় প্রজন্মের রানটাইমে উপলব্ধ নেই৷
- 2য় প্রজন্মের রানটাইমে নন-বিল্ট-ইন লাইব্রেরি (কখনও কখনও "ভেন্ডরিং" বা "সেলফ-বান্ডলিং" বলা হয়) কপি করার আর প্রয়োজন নেই। পরিবর্তে, সেগুলি
requirements.txt
এ তালিকাভুক্ত করা উচিত যেখানে বিল্ড সিস্টেম স্থাপনের সময় স্বয়ংক্রিয়ভাবে আপনার পক্ষ থেকে সেগুলি ইনস্টল করে।
3য়-পক্ষের প্যাকেজ পরিচালনায় এই পরিবর্তনগুলির ফলস্বরূপ, appengine_config.py
ফাইল বা lib
ফোল্ডারের প্রয়োজন নেই, তাই সেগুলি মুছুন। ২য় প্রজন্মের রানটাইমে, App Engine স্বয়ংক্রিয়ভাবে requirements.txt
এ তালিকাভুক্ত তৃতীয় পক্ষের প্যাকেজ ইনস্টল করে। সারসংক্ষেপ:
- কোন স্ব-বান্ডিল বা অনুলিপি করা থার্ড-পার্টি লাইব্রেরি;
requirements.txt
এ তাদের তালিকা করুন - কোনো
lib
ফোল্ডারে কোনোpip install
যাবে না, মানে কোনোlib
ফোল্ডারের মেয়াদ নেই -
app.yaml
এ বিল্ট-ইন থার্ড-পার্টি লাইব্রেরি (এভাবে কোনওlibraries
বিভাগ নেই) কোনও তালিকা নেই;requirements.txt
এ তাদের তালিকা করুন - আপনার অ্যাপ্লিকেশান থেকে রেফারেন্স করার জন্য কোনও 3য়-পক্ষের লাইব্রেরি নেই মানে
appengine_config.py
ফাইল নেই৷
requirements.txt
এ সমস্ত পছন্দসই 3য়-পার্টি লাইব্রেরি তালিকাভুক্ত করা একমাত্র বিকাশকারীর প্রয়োজনীয়তা।
অ্যাপ ইঞ্জিন SDK ব্যবহার করতে অ্যাপ্লিকেশন আপডেট করুন
উপরে উল্লিখিত হিসাবে, পাইথন 3 অ্যাপগুলির অ্যাপ ইঞ্জিন বান্ডিল পরিষেবাগুলি অ্যাক্সেস করার জন্য কিছু পরিবর্তন প্রয়োজন:
- বান্ডেল অ্যাপ ইঞ্জিন SDK (
requirements.txt
এ) - অ্যাপ ইঞ্জিন SDK সক্রিয় করুন (
app.yaml
এ) - WSGI অবজেক্ট মোড়ানো (
main.py
এ)
প্রথম জোড়া উপরে সম্পন্ন হয়েছে, তাই শেষ প্রয়োজন main.py
আপডেট করা।
আগে:
নীচে মডিউল 12 এর উপসংহারে পাইথন 2 main.py
রয়েছে:
from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb
app = Flask(__name__)
HOUR = 3600
পরে:
পাইথন 3 পোর্টের জন্য, SDK আমদানি করুন এবং এটির সাথে ফ্লাস্ক অ্যাপ অবজেক্টটি (SDK র্যাপার) মোড়ানো, যার ফলে নিম্নলিখিতগুলি হবে:
from flask import Flask, render_template, request
from google.appengine.api import memcache, wrap_wsgi_app
from google.appengine.ext import ndb
app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
HOUR = 3600
বান্ডেল করা পরিষেবাগুলি অ্যাক্সেস করতে 2.x থেকে 3.x পর্যন্ত পোর্ট করার সময় বিকাশকারীদের তাদের পাইথন অ্যাপগুলিতে এই পরিবর্তনগুলি করতে হবে৷ আপনি যদি ফ্লাস্ক ব্যবহার না করেন তবে ডক্সে জ্যাঙ্গো এবং পিরামিডের নমুনাও রয়েছে। যদি আপনার Python 2 কোডটি একটি ওয়েব অ্যাপ না হয়, তাহলে Python 3 এ পোর্ট করার সময় শুধুমাত্র SDK প্যাকেজ সহ যথেষ্ট। আমাদের অ্যাপ্লিকেশন কোডটি মূলত পাইথন 2 এবং 3 এর অধীনে কাজ করার জন্য তৈরি করা হয়েছিল, তাই কোনও অতিরিক্ত সামঞ্জস্য পরিবর্তনের প্রয়োজন নেই।
অ্যাপ্লিকেশন স্থাপন
উপরের পরিবর্তনগুলি সম্পূর্ণ করার পরে, আপনি আপডেট করা নমুনা অ্যাপ স্থাপন করতে পারেন। (একই জিসিপি প্রোজেক্টে একটি আসল পাইথন 2 সংস্করণে আপনার অ্যাপের পাইথন 3 সংস্করণ স্থাপন করার সময় কোনও সমস্যা নেই।) অ্যাপের আচরণ একই থাকা উচিত। আপনি যদি আপনার আপডেট করা অ্যাপটিকে আমাদের সাথে তুলনা করতে চান তবে মাইগ্রেশন রেপোতে মডিউল 12b ফোল্ডারটি দেখুন। Python 3-এর মতো সাম্প্রতিক রানটাইমে অ্যাপ ইঞ্জিন বান্ডেল করা পরিষেবাগুলির সমর্থন সম্পর্কে আরও জানতে, বৈশিষ্ট্য লঞ্চের ঘোষণার পাশাপাশি মডিউল 17 কোডল্যাব দেখুন।
মডিউল 12-এ বোনাস ধাপ শেষ করার জন্য অভিনন্দন! এছাড়াও Python 3 রানটাইমের জন্য কনফিগারেশন ফাইল প্রস্তুত করার ডকুমেন্টেশন দেখুন। পরবর্তী পদক্ষেপ এবং পরিষ্কারের জন্য উপরের সারাংশ/পরিষ্কার বিভাগটি পর্যালোচনা করুন।
8. অতিরিক্ত সম্পদ
এই বা সম্পর্কিত মাইগ্রেশন মডিউল এবং সেইসাথে সম্পর্কিত পণ্যগুলি আরও অন্বেষণকারী বিকাশকারীদের জন্য নীচে তালিকাভুক্ত অতিরিক্ত সংস্থান রয়েছে৷ এর মধ্যে এই বিষয়বস্তুতে প্রতিক্রিয়া প্রদানের স্থান, কোডের লিঙ্ক এবং বিভিন্ন ডকুমেন্টেশন রয়েছে যা আপনার কাজে লাগতে পারে।
কোডল্যাব সমস্যা/প্রতিক্রিয়া
আপনি যদি এই কোডল্যাবের সাথে কোনো সমস্যা খুঁজে পান, অনুগ্রহ করে ফাইল করার আগে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। অনুসন্ধান এবং নতুন সমস্যা তৈরি করার লিঙ্ক:
মাইগ্রেশন সম্পদ
মডিউল 2 (START) এবং মডিউল 12 (FINISH) এর জন্য রেপো ফোল্ডারগুলির লিঙ্কগুলি নীচের টেবিলে পাওয়া যাবে। এগুলি সমস্ত অ্যাপ ইঞ্জিন কোডল্যাব মাইগ্রেশনের জন্য রেপো থেকে অ্যাক্সেস করা যেতে পারে যা আপনি একটি জিপ ফাইল ক্লোন বা ডাউনলোড করতে পারেন।
কোডল্যাব | পাইথন 2 | পাইথন 3 |
কোড (এই টিউটোরিয়ালে বৈশিষ্ট্যযুক্ত নয়) | ||
মডিউল 12 (এই কোডল্যাব) |
অনলাইন রেফারেন্স
নীচে অনলাইন সংস্থান রয়েছে যা এই টিউটোরিয়ালের জন্য প্রাসঙ্গিক হতে পারে:
অ্যাপ ইঞ্জিন
- অ্যাপ ইঞ্জিন ডকুমেন্টেশন
- পাইথন 2 অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড এনভায়রনমেন্ট) রানটাইম
- Python 3 অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড এনভায়রনমেন্ট) রানটাইম
- পাইথন 2 এবং 3 অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড এনভায়রনমেন্ট) রানটাইমের মধ্যে পার্থক্য
- পাইথন 2 থেকে 3 অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড এনভায়রনমেন্ট) মাইগ্রেশন গাইড
- অ্যাপ ইঞ্জিন মূল্য এবং কোটা তথ্য
- দ্বিতীয় প্রজন্মের অ্যাপ ইঞ্জিন প্ল্যাটফর্ম লঞ্চ (2018)
- প্রথম এবং দ্বিতীয় প্রজন্মের প্ল্যাটফর্মের তুলনা
- উত্তরাধিকার রানটাইম জন্য দীর্ঘমেয়াদী সমর্থন
- ডকুমেন্টেশন মাইগ্রেশন নমুনা রেপো
- কমিউনিটি-কন্ট্রিবিউটেড মাইগ্রেশন নমুনা রেপো
ক্লাউড মেমোরিস্টোর এবং ক্লাউড ডেটাস্টোর
- ক্লাউড মেমোরিস্টোর পণ্য পৃষ্ঠা
- রেডিস ডকুমেন্টেশনের জন্য ক্লাউড মেমোরিস্টোর
- মেমক্যাশেড ডকুমেন্টেশনের জন্য ক্লাউড মেমোরিস্টোর
- ক্লাউড মেমোরিস্টোর (রেডিসের জন্য) মূল্যের তথ্য
- ক্লাউড ডেটাস্টোর ডকুমেন্টেশন
- ক্লাউড ডেটাস্টোর মূল্যের তথ্য
অন্যান্য ক্লাউড তথ্য
- গুগল ক্লাউড প্ল্যাটফর্মে পাইথন
- গুগল ক্লাউড পাইথন ক্লায়েন্ট লাইব্রেরি
- Google ক্লাউড "সর্বদা বিনামূল্যে" স্তর
- গুগল ক্লাউড SDK (
gcloud
কমান্ড লাইন টুল) - সমস্ত Google ক্লাউড ডকুমেন্টেশন
ভিডিও
- সার্ভারহীন মাইগ্রেশন স্টেশন
- সার্ভারহীন অভিযান
- Google Cloud Tech- এ সদস্যতা নিন
- Google Developers- এ সদস্যতা নিন
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।