ফ্লাস্ক অ্যাপে অ্যাপ ইঞ্জিন মেমক্যাশে কীভাবে ব্যবহার করবেন (মডিউল 12)

1. সংক্ষিপ্ত বিবরণ

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

এই কোডল্যাব আপনাকে মডিউল ১ কোডল্যাবের নমুনা অ্যাপে অ্যাপ ইঞ্জিন মেমক্যাশ কীভাবে অন্তর্ভুক্ত এবং ব্যবহার করতে হয় তা শেখাবে। আমরা এই মডিউল ১২ টিউটোরিয়ালে মেমক্যাশের ব্যবহার যোগ করব এবং তারপর মডিউল ১৩-এর পরবর্তী অংশে ক্লাউড মেমোরিস্টোরে মাইগ্রেট করব

তুমি শিখবে কিভাবে

  • অ্যাপ ইঞ্জিন মেমক্যাশ এপিআই/লাইব্রেরি ব্যবহার করুন
  • একটি বেসিক পাইথন 2 ফ্লাস্ক অ্যাপ ইঞ্জিন এনডিবি অ্যাপে ক্যাশিং যোগ করুন

তোমার যা লাগবে

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলি সম্পূর্ণ করুন।

পাইথনের সাথে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবীন মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবীন মধ্যবর্তী দক্ষ

2. পটভূমি

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

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

এই টিউটোরিয়ালে নিম্নলিখিত ধাপগুলি রয়েছে:

  1. সেটআপ/প্রিওয়ার্ক
  2. কনফিগারেশন আপডেট করুন
  3. অ্যাপ্লিকেশন কোড পরিবর্তন করুন

৩. সেটআপ/প্রিওয়ার্ক

টিউটোরিয়ালের মূল অংশে যাওয়ার আগে, আসুন আমাদের প্রকল্পটি সেট আপ করি, কোডটি পাই, তারপর বেসলাইন অ্যাপটি স্থাপন করি যাতে আমরা জানতে পারি যে আমরা কার্যকরী কোড দিয়ে শুরু করেছি।

১. সেটআপ প্রকল্প

যদি আপনি মডিউল ১ কোডল্যাব সম্পন্ন করে থাকেন, তাহলে আমরা একই প্রকল্প (এবং কোড) পুনরায় ব্যবহার করার পরামর্শ দিচ্ছি। বিকল্পভাবে, আপনি একটি নতুন প্রকল্প তৈরি করতে পারেন অথবা অন্য একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে পারেন। নিশ্চিত করুন যে প্রকল্পটিতে একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে এবং অ্যাপ ইঞ্জিন সক্রিয় আছে।

2. বেসলাইন নমুনা অ্যাপ পান

এই কোডল্যাবের পূর্বশর্তগুলির মধ্যে একটি হল একটি কার্যকরী মডিউল ১ নমুনা অ্যাপ থাকা। যদি আপনার কাছে এমন কোনও অ্যাপ না থাকে, তাহলে এখানে এগিয়ে যাওয়ার আগে যেকোনো একটি টিউটোরিয়াল (উপরের লিঙ্কগুলি) সম্পূর্ণ করুন। অন্যথায় যদি আপনি ইতিমধ্যেই এর বিষয়বস্তুগুলির সাথে পরিচিত হন, তাহলে আপনি নীচের মডিউল ১ কোড দিয়ে শুরু করতে পারেন।

আপনি আপনার অথবা আমাদের, মডিউল ১ কোড ব্যবহার করুন না কেন, আমরা শুরু করব মডিউল ১ কোড দিয়ে। এই কোডল্যাবটি আপনাকে প্রতিটি ধাপে নিয়ে যাবে, এবং মডিউল ১১ রেপো ফোল্ডারে থাকা কোডের সাথে সাদৃশ্যপূর্ণ কোড দিয়ে শেষ করবে (FINISH)।

মডিউল ১ এর স্টার্টিং ফাইলের ডিরেক্টরি (আপনার অথবা আমাদের) এইরকম দেখাবে:

$ ls
README.md               main.py                 templates
app.yaml                requirements.txt

৩. (পুনরায়) বেসলাইন অ্যাপ স্থাপন করুন

আপনার এখন কার্যকর করার জন্য বাকি প্রিওয়ার্ক ধাপগুলি:

  1. gcloud কমান্ড-লাইন টুলের সাথে নিজেকে পুনরায় পরিচিত করুন।
  2. gcloud app deploy মাধ্যমে নমুনা অ্যাপটি পুনরায় ডিপ্লয় করুন
  3. অ্যাপ ইঞ্জিনে কোনও সমস্যা ছাড়াই অ্যাপটি চলছে কিনা তা নিশ্চিত করুন।

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

a7a9d2b80d706a2b.png সম্পর্কে

৪. কনফিগারেশন আপডেট করুন

স্ট্যান্ডার্ড অ্যাপ ইঞ্জিন কনফিগারেশন ফাইলগুলিতে ( app.yaml , requirements.txt , appengine_config.py ) কোনও পরিবর্তনের প্রয়োজন নেই।

৫. অ্যাপ্লিকেশন ফাইলগুলি পরিবর্তন করুন

যেহেতু আমরা শুধুমাত্র একটি অ্যাপ ইঞ্জিন API যোগ করছি, তাই কোনও বহিরাগত প্যাকেজ জড়িত নেই, অর্থাৎ কোনও কনফিগারেশন ফাইল ( 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

মেমক্যাশ সাপোর্ট সহ ক্যাশিং যোগ করুন

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

  1. বর্তমান ভিজিট সেট করুন এবং এটিকে visitor বলুন
  2. ক্যাশে থেকে সাম্প্রতিক visits আনার চেষ্টা করুন
  3. যদি ক্যাশে খালি থাকে অথবা সাম্প্রতিকতম ভিজিটর ( visits[0]['visitor'] ) বর্তমান visitor থেকে আলাদা হয়: তাহলে এই নতুন ভিজিটটি সংরক্ষণ করুন, সাম্প্রতিকতম ভিজিটগুলি আনুন এবং এক ঘন্টার জন্য ক্যাশে করুন।
  4. ওয়েব টেমপ্লেটের মাধ্যমে ব্যবহারকারীর 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)

এখানে করা পরিবর্তনগুলির একটি চিত্রিত উপস্থাপনা রয়েছে:

b1242503602f7bf0.png সম্পর্কে

এর মাধ্যমে মডিউল ১ নমুনা অ্যাপে অ্যাপ ইঞ্জিন memcache ব্যবহার যোগ করার জন্য প্রয়োজনীয় সকল পরিবর্তন সম্পন্ন হয়। আসুন এই অ্যাপটি তৈরি এবং স্থাপন করি যাতে এটি কাজ করে!

৬. সারাংশ/পরিষ্কারকরণ

এই বিভাগটি অ্যাপটি স্থাপন করে, এটি উদ্দেশ্য অনুসারে কাজ করে এবং যেকোনো প্রতিফলিত আউটপুটে যাচাই করে এই কোডল্যাবটি শেষ করে। অ্যাপ যাচাইকরণের পরে, যেকোনো পরিষ্কার-পরিচ্ছন্নতার পদক্ষেপগুলি সম্পাদন করুন এবং পরবর্তী পদক্ষেপগুলি বিবেচনা করুন।

অ্যাপ্লিকেশন স্থাপন এবং যাচাই করুন

gcloud app deploy দিয়ে আপনার অ্যাপটি পুনরায় স্থাপন করুন এবং অ্যাপটি কাজ করছে কিনা তা নিশ্চিত করুন। আপনার কোডটি এখন FINISH, Module 12 ফোল্ডারে থাকা কোডের সাথে মিলবে। আউটপুটটি আপনার আগে স্থাপন করা Module 1 অ্যাপের মতো হওয়া উচিত:

a7a9d2b80d706a2b.png সম্পর্কে

আমরা শুধু একই ব্যবহারকারীর জন্য ব্যবহারকারীর অভিজ্ঞতা দ্রুততর করেছি। যখন তারা রিফ্রেশ করবে, তখন আপনি সরাসরি ক্যাশে থেকে ফলাফল পাবেন, যা নতুন ভিজিট তৈরি করবে না বা ডেটাস্টোর ফেচও করবে না।

আমাদের নমুনা অ্যাপ্লিকেশনে অ্যাপ ইঞ্জিন memcache পরিষেবার ব্যবহার যোগ করার জন্য মডিউল ১২ কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন। বোনাস ধাপে এখন আপনার কাছে এই পাইথন ২ অ্যাপটি পাইথন ৩-এ পোর্ট করার বিকল্প রয়েছে।

পরিষ্কার করা

সাধারণ

যদি এখনকার মতো কাজ শেষ হয়ে যায়, তাহলে বিলিং এড়াতে আমরা আপনাকে আপনার অ্যাপ ইঞ্জিন অ্যাপটি অক্ষম করার পরামর্শ দিচ্ছি। তবে আপনি যদি আরও কিছু পরীক্ষা বা পরীক্ষা করতে চান, তাহলে অ্যাপ ইঞ্জিন প্ল্যাটফর্মের একটি বিনামূল্যের কোটা আছে, এবং যতক্ষণ না আপনি সেই ব্যবহারের স্তর অতিক্রম করেন, ততক্ষণ আপনাকে চার্জ করা উচিত নয়। এটি গণনার জন্য, তবে প্রাসঙ্গিক অ্যাপ ইঞ্জিন পরিষেবাগুলির জন্যও চার্জ হতে পারে, তাই আরও তথ্যের জন্য এর মূল্য পৃষ্ঠাটি দেখুন। যদি এই মাইগ্রেশনে অন্যান্য ক্লাউড পরিষেবা জড়িত থাকে, তবে সেগুলি আলাদাভাবে বিল করা হয়। উভয় ক্ষেত্রেই, প্রযোজ্য হলে, নীচের "এই কোডল্যাবের জন্য নির্দিষ্ট" বিভাগটি দেখুন।

সম্পূর্ণ প্রকাশের জন্য, অ্যাপ ইঞ্জিনের মতো গুগল ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে স্থাপনের জন্য সামান্য বিল্ড এবং স্টোরেজ খরচ হয়। ক্লাউড স্টোরেজের মতো ক্লাউড বিল্ডেরও নিজস্ব ফ্রি কোটা রয়েছে। সেই ছবির স্টোরেজ সেই কোটার কিছু অংশ ব্যবহার করে। তবে, আপনি এমন একটি অঞ্চলে বাস করতে পারেন যেখানে এই ধরণের ফ্রি টিয়ার নেই, তাই সম্ভাব্য খরচ কমাতে আপনার স্টোরেজ ব্যবহার সম্পর্কে সচেতন থাকুন। আপনার পর্যালোচনা করা উচিত এমন নির্দিষ্ট ক্লাউড স্টোরেজ "ফোল্ডার"গুলির মধ্যে রয়েছে:

  • 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 *ation এর উপর নির্ভর করে, উদাহরণস্বরূপ, " us " যদি আপনার অ্যাপটি মার্কিন যুক্তরাষ্ট্রে হোস্ট করা হয়।

অন্যদিকে, যদি আপনি এই অ্যাপ্লিকেশন বা অন্যান্য সম্পর্কিত মাইগ্রেশন কোডল্যাবগুলি চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, তাহলে আপনার প্রকল্পটি বন্ধ করে দিন

এই কোডল্যাবের জন্য নির্দিষ্ট

নীচে তালিকাভুক্ত পরিষেবাগুলি এই কোডল্যাবের জন্য অনন্য। আরও তথ্যের জন্য প্রতিটি পণ্যের ডকুমেন্টেশন দেখুন:

পরবর্তী পদক্ষেপ

পরবর্তী লজিক্যাল মাইগ্রেশনটি বিবেচনা করার জন্য মডিউল ১৩- এ আলোচনা করা হয়েছে, যেখানে ডেভেলপারদের দেখানো হয়েছে কিভাবে অ্যাপ ইঞ্জিন memcache পরিষেবা থেকে ক্লাউড মেমোরিস্টোরে মাইগ্রেট করতে হয়। এই মাইগ্রেশনগুলি ঐচ্ছিক এবং ব্যবহারকারীদের জন্য উপলব্ধ যারা তাদের অ্যাপ্লিকেশনগুলিকে আধুনিকীকরণের জন্য বিভিন্ন পদক্ষেপ নিতে চান। ক্লাউড মেমোরিস্টোর পরিষেবাটি অনেক কারণে অ্যাপ ইঞ্জিনের memcache একটি উল্লেখযোগ্য আপগ্রেড:

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

যদি আপনার মনে হয় যে ক্লাউড মেমোরিস্টোর থেকে পাওয়া সমস্ত বৈশিষ্ট্যের প্রয়োজন নেই অথবা খরচের উপর এর প্রভাব সম্পর্কে উদ্বিগ্ন, তাহলে আপনি অ্যাপ ইঞ্জিন মেমক্যাশে থাকতে পারেন।

বিয়ন্ড মডিউল ১৩-তে ক্লাউড এনডিবি এবং ক্লাউড ডেটাস্টোর, অথবা ক্লাউড টাস্কের মতো আরও অনেক সম্ভাব্য মাইগ্রেশন রয়েছে। ক্লাউড রান এবং ক্লাউড ফাংশনে ক্রস-প্রোডাক্ট মাইগ্রেশনও রয়েছে। আপনি মাইগ্রেশন রেপোতে এগুলি সবই পাবেন।

আরেকটি সম্ভাব্য পরবর্তী ধাপ হল পাইথন 3-এ পোর্টিং করা, যা পরবর্তী বিভাগে একটি ঐচ্ছিক পদক্ষেপ হিসেবে আলোচনা করা হয়েছে।

৭. বোনাস: পাইথন ৩-এ স্থানান্তর

সংক্ষিপ্ত বিবরণ

এই বিভাগে ঐচ্ছিক বোনাস কন্টেন্ট রয়েছে যা মডিউল ১২ অ্যাপ্লিকেশনটিকে আমরা উপরে শেষ করেছি এবং পাইথন ৩-এ স্থানান্তরিত করে। আমরা কনফিগারেশন দিয়ে শুরু করি এবং তারপরে অ্যাপ্লিকেশনটি অনুসরণ করি।

app.yaml সরলীকৃত করুন

পাইথন ৩ রানটাইমের একটি সুবিধা হল app.yaml উল্লেখযোগ্যভাবে সরলীকৃত করা যেতে পারে।

আগে:

মডিউল ১২ এর উপসংহারে 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২০২১ সালে যখন লিগ্যাসি অ্যাপ ইঞ্জিন পরিষেবাগুলি দ্বিতীয় প্রজন্মের রানটাইমগুলির জন্য উপলব্ধ হয় , তখন Python 3 সহ কিছু রানটাইমের জন্য ndb , taskqueue এবং memcache মতো API গুলি অ্যাক্সেস করার জন্য অতিরিক্ত বুটস্ট্র্যাপিং প্রয়োজন হয়। কনফিগারেশনের এই লাইনটি সেই উদ্দেশ্য পূরণ করে।

আপডেটের প্রয়োজনীয়তা.txt

requirements.txt ফাইলে মূল API গুলির আরেকটি বুটস্ট্র্যাপিং প্রয়োজন: নতুন অ্যাপ ইঞ্জিন SDK-তে অ্যাক্সেস অন্তর্ভুক্ত করতে হবে।

আগে:

মডিউল ১২ এর উপসংহারে app.yaml এ যা আছে তা নিচে দেওয়া হল:

flask

পরে:

কেবল অ্যাপ ইঞ্জিন পাইথন SDK যোগ করুন, এবং আপনার নিম্নলিখিতগুলি থাকা উচিত:

flask
appengine-python-standard

appengine_config.py এবং lib মুছে ফেলুন

পরবর্তী প্রজন্মের অ্যাপ ইঞ্জিন রানটাইম তৃতীয় পক্ষের প্যাকেজ ব্যবহার পুনর্গঠন করে:

  • বিল্ট-ইন লাইব্রেরি হল সেইসব লাইব্রেরি যা গুগল দ্বারা যাচাই করা হয় এবং অ্যাপ ইঞ্জিন সার্ভারে উপলব্ধ করা হয়, সম্ভবত কারণ এতে C/C++ কোড থাকে যা ডেভেলপারদের ক্লাউডে স্থাপন করার অনুমতি নেই—এগুলি আর দ্বিতীয় প্রজন্মের রানটাইমে উপলব্ধ নেই।
  • দ্বিতীয় প্রজন্মের রানটাইমে অ-বিল্ট-ইন লাইব্রেরি (কখনও কখনও "ভেন্ডরিং" বা "সেলফ-বান্ডলিং" বলা হয়) কপি করার আর প্রয়োজন নেই। পরিবর্তে, সেগুলি requirements.txt এ তালিকাভুক্ত করা উচিত যেখানে বিল্ড সিস্টেম ডিপ্লয় করার সময় আপনার পক্ষ থেকে স্বয়ংক্রিয়ভাবে সেগুলি ইনস্টল করে।

তৃতীয় পক্ষের প্যাকেজ ব্যবস্থাপনায় এই পরিবর্তনগুলির ফলে, appengine_config.py ফাইল বা lib ফোল্ডার কোনটিরই প্রয়োজন নেই, তাই সেগুলি মুছে ফেলুন। দ্বিতীয় প্রজন্মের রানটাইমে, অ্যাপ ইঞ্জিন স্বয়ংক্রিয়ভাবে requirements.txt এ তালিকাভুক্ত তৃতীয় পক্ষের প্যাকেজগুলি ইনস্টল করে। সংক্ষেপে:

  1. কোনও স্ব-বান্ডেল বা কপি করা তৃতীয় পক্ষের লাইব্রেরি নেই; requirements.txt এ সেগুলি তালিকাভুক্ত করুন।
  2. lib ফোল্ডারে pip install নেই, যার অর্থ lib ফোল্ডার পিরিয়ড নেই
  3. app.yaml তে কোনও অন্তর্নির্মিত তৃতীয় পক্ষের লাইব্রেরির তালিকা নেই (অতএব কোনও libraries বিভাগ নেই); requirements.txt তে সেগুলি তালিকাভুক্ত করুন।
  4. আপনার অ্যাপ থেকে রেফারেন্সের জন্য কোনও তৃতীয় পক্ষের লাইব্রেরি নেই মানে কোনও appengine_config.py ফাইল নেই

সকল কাঙ্ক্ষিত থার্ড-পার্টি লাইব্রেরি requirements.txt এ তালিকাভুক্ত করাই ডেভেলপারের একমাত্র প্রয়োজন।

অ্যাপ ইঞ্জিন SDK ব্যবহার করার জন্য অ্যাপ্লিকেশন আপডেট করুন

উপরে উল্লিখিত হিসাবে, অ্যাপ ইঞ্জিন বান্ডেলড পরিষেবাগুলি অ্যাক্সেস করার জন্য পাইথন 3 অ্যাপগুলিতে কিছু পরিবর্তন প্রয়োজন:

  1. বান্ডেল অ্যাপ ইঞ্জিন SDK ( requirements.txt এ)
  2. অ্যাপ ইঞ্জিন SDK সক্রিয় করুন ( app.yaml এ)
  3. WSGI অবজেক্টটি মোড়ানো ( main.py তে)

প্রথম জোড়াটি উপরে সম্পন্ন করা হয়েছে, তাই শেষ প্রয়োজন হল main.py আপডেট করা।

আগে:

মডিউল ১২ এর উপসংহারে Python 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

পরে:

পাইথন ৩ পোর্টের জন্য, SDK ইম্পোর্ট করুন এবং Flask অ্যাপ অবজেক্টটি (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 অ্যাপগুলিতে এই পরিবর্তনগুলি করতে হবে। আপনি যদি Flask ব্যবহার না করেন, তাহলে ডক্সে Django এবং Pyramid নমুনাও রয়েছে। যদি আপনার Python 2 কোডটি ওয়েব অ্যাপ না হয়, তাহলে Python 3 এ পোর্ট করার সময় শুধুমাত্র SDK প্যাকেজ অন্তর্ভুক্ত করা যথেষ্ট। আমাদের অ্যাপ্লিকেশন কোডটি মূলত Python 2 এবং 3 এর অধীনে কাজ করার জন্য তৈরি করা হয়েছিল, তাই কোনও অতিরিক্ত সামঞ্জস্য পরিবর্তনের প্রয়োজন নেই।

অ্যাপ্লিকেশন স্থাপন করুন

উপরের পরিবর্তনগুলি সম্পন্ন করার পরে, আপনি আপডেট করা নমুনা অ্যাপটি স্থাপন করতে পারেন। (একই GCP প্রকল্পে মূল Python 2 সংস্করণের উপর আপনার অ্যাপের Python 3 সংস্করণ স্থাপন করার সময় কোনও সমস্যা নেই।) অ্যাপের আচরণ একই থাকা উচিত। আপনার আপডেট করা অ্যাপটিকে আমাদের সাথে তুলনা করতে হলে, মাইগ্রেশন রেপোতে মডিউল 12b ফোল্ডারটি দেখুন। Python 3 এর মতো সর্বশেষ রানটাইমে অ্যাপ ইঞ্জিন বান্ডেলড পরিষেবাগুলির সমর্থন সম্পর্কে আরও জানতে, বৈশিষ্ট্য লঞ্চ ঘোষণার পাশাপাশি মডিউল 17 কোডল্যাব দেখুন।

মডিউল ১২-এর বোনাস ধাপটি সম্পন্ন করার জন্য অভিনন্দন! পাইথন ৩ রানটাইমের জন্য কনফিগারেশন ফাইল প্রস্তুত করার ডকুমেন্টেশনটিও দেখুন। পরবর্তী পদক্ষেপ এবং পরিষ্কারের জন্য উপরের সারাংশ/পরিষ্কারকরণ বিভাগটি পর্যালোচনা করুন।

৮. অতিরিক্ত সম্পদ

ডেভেলপারদের জন্য এই বা সম্পর্কিত মাইগ্রেশন মডিউল এবং সম্পর্কিত পণ্যগুলি আরও অন্বেষণ করার জন্য অতিরিক্ত সংস্থানগুলি নীচে তালিকাভুক্ত করা হয়েছে। এর মধ্যে এই বিষয়বস্তুতে প্রতিক্রিয়া প্রদানের স্থান, কোডের লিঙ্ক এবং আপনার জন্য দরকারী মনে হতে পারে এমন বিভিন্ন ডকুমেন্টেশন অন্তর্ভুক্ত রয়েছে।

কোডল্যাব সমস্যা/প্রতিক্রিয়া

এই কোডল্যাবে যদি কোনও সমস্যা খুঁজে পান, তাহলে ফাইল করার আগে অনুগ্রহ করে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। নতুন সমস্যা অনুসন্ধান এবং তৈরি করার লিঙ্ক:

মাইগ্রেশন রিসোর্স

মডিউল ২ (START) এবং মডিউল ১২ (FINISH) এর জন্য রেপো ফোল্ডারগুলির লিঙ্কগুলি নীচের টেবিলে পাওয়া যাবে। সমস্ত অ্যাপ ইঞ্জিন কোডল্যাব মাইগ্রেশনের জন্য রেপো থেকেও এগুলি অ্যাক্সেস করা যেতে পারে যা আপনি ক্লোন করতে পারেন বা একটি ZIP ফাইল ডাউনলোড করতে পারেন।

কোডল্যাব

পাইথন ২

পাইথন ৩

মডিউল ১

কোড

কোড (এই টিউটোরিয়ালে দেখানো হয়নি)

মডিউল ১২ (এই কোডল্যাব)

কোড

কোড

অনলাইন রেফারেন্স

এই টিউটোরিয়ালের জন্য প্রাসঙ্গিক হতে পারে এমন অনলাইন রিসোর্সগুলি নীচে দেওয়া হল:

অ্যাপ ইঞ্জিন

ক্লাউড মেমোরিস্টোর এবং ক্লাউড ডেটাস্টোর

অন্যান্য ক্লাউড তথ্য

ভিডিও

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।