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

1. ওভারভিউ

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

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

এই মডিউলে, আমরা পুশ টাস্কের ব্যবহার যোগ করব, তারপর সেই ব্যবহারটিকে মডিউল 8-এর ক্লাউড টাস্কে এবং পরে Python 3 এবং মডিউল 9-এর ক্লাউড ডেটাস্টোরে স্থানান্তরিত করব যারা টাস্ক কিউ ব্যবহার করছেন তারা ক্লাউড পাব/সাব-এ স্থানান্তরিত হবে এবং পরিবর্তে মডিউল 18-19 উল্লেখ করা উচিত।

আপনি কিভাবে শিখবেন

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

আপনি কি প্রয়োজন হবে

সমীক্ষা

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

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

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

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

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

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

2. পটভূমি

অ্যাপ ইঞ্জিন টাস্ক কিউ পুশ এবং টাস্ক উভয় কাজকে সমর্থন করে। অ্যাপ্লিকেশন পোর্টেবিলিটি উন্নত করতে, Google ক্লাউড টিম লিগ্যাসি বান্ডেল করা পরিষেবাগুলি যেমন টাস্ক কিউ থেকে অন্য ক্লাউড স্বতন্ত্র বা 3য়-পক্ষের সমতুল্য পরিষেবাগুলিতে স্থানান্তরিত করার পরামর্শ দেয়৷

পুল টাস্ক মাইগ্রেশন মাইগ্রেশন মডিউল 18-19 এ কভার করা হয়েছে যখন মডিউল 7-9 পুশ টাস্ক মাইগ্রেশনে ফোকাস করে। অ্যাপ ইঞ্জিন টাস্ক কিউ পুশ টাস্কগুলি থেকে স্থানান্তরিত করার জন্য, মডিউল 1 কোডল্যাবের ফলে বিদ্যমান ফ্লাস্ক এবং অ্যাপ ইঞ্জিন NDB অ্যাপে এর ব্যবহার যোগ করুন। সেই অ্যাপে, একটি নতুন পেজ ভিউ একটি নতুন ভিজিট রেজিস্টার করে এবং ব্যবহারকারীর সাম্প্রতিক ভিজিটগুলি প্রদর্শন করে। যেহেতু পুরানো ভিজিটগুলি আর কখনও দেখানো হয় না এবং ডেটাস্টোরে জায়গা নেয়, তাই আমরা একটি পুশ টাস্ক তৈরি করতে যাচ্ছি যাতে পুরানো ভিজিটগুলি স্বয়ংক্রিয়ভাবে মুছে যায়৷ মডিউল 8 এ এগিয়ে, আমরা সেই অ্যাপটিকে টাস্ক কিউ থেকে ক্লাউড টাস্কে স্থানান্তর করব।

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

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

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

এই বিভাগটি ব্যাখ্যা করে কিভাবে:

  1. আপনার ক্লাউড প্রকল্প সেট আপ করুন
  2. বেসলাইন নমুনা অ্যাপ্লিকেশন পান
  3. (পুনঃ) বেসলাইন অ্যাপ স্থাপন এবং যাচাই করুন

এই পদক্ষেপগুলি নিশ্চিত করে যে আপনি কাজের কোড দিয়ে শুরু করছেন।

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

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

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

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

আপনি যে মডিউল 1 অ্যাপটি ব্যবহার করেন তা নির্বিশেষে, ফোল্ডারটি নীচের মত হওয়া উচিত, সম্ভবত একটি lib ফোল্ডারের সাথেও:

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

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

মডিউল 1 অ্যাপটি স্থাপন (পুনরায়) করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. lib ফোল্ডারটি মুছুন যদি একটি থাকে এবং চালান: pip install -t lib -r requirements.txt lib পুনরুদ্ধার করতে। আপনার যদি পাইথন 2 এবং 3 উভয়ই ইনস্টল থাকে তবে আপনাকে এর পরিবর্তে pip2 কমান্ড ব্যবহার করতে হবে।
  2. নিশ্চিত করুন যে আপনি gcloud কমান্ড-লাইন টুলটি ইনস্টল এবং শুরু করেছেন এবং এর ব্যবহার পর্যালোচনা করেছেন।
  3. gcloud config set project PROJECT_ID দিয়ে আপনার ক্লাউড প্রজেক্ট সেট করুন যদি আপনি প্রতিটি gcloud কমান্ড দিয়ে আপনার PROJECT_ID লিখতে না চান।
  4. gcloud app deploy সাথে নমুনা অ্যাপটি স্থাপন করুন
  5. নিশ্চিত করুন যে মডিউল 1 অ্যাপটি সাম্প্রতিক ভিজিটগুলি প্রদর্শন করার সমস্যা ছাড়াই প্রত্যাশিতভাবে চলছে (নীচে চিত্রিত)

a7a9d2b80d706a2b.png

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

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

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

প্রাথমিক অ্যাপ্লিকেশন ফাইল হল main.py , এবং এই বিভাগে সমস্ত আপডেট সেই ফাইলের সাথে সম্পর্কিত৷ এছাড়াও ওয়েব টেমপ্লেট, templates/index.html এ একটি ছোটখাট আপডেট রয়েছে। এই বিভাগে প্রয়োগ করার জন্য এই পরিবর্তনগুলি হল:

  1. আমদানি আপডেট করুন
  2. পুশ টাস্ক যোগ করুন
  3. টাস্ক হ্যান্ডলার যোগ করুন
  4. ওয়েব টেমপ্লেট আপডেট করুন

1. আমদানি আপডেট করুন

google.appengine.api.taskqueue এর একটি আমদানি টাস্ক কিউ কার্যকারিতা নিয়ে আসে। কিছু পাইথন স্ট্যান্ডার্ড লাইব্রেরি প্যাকেজও প্রয়োজন:

  • যেহেতু আমরা প্রাচীনতম ভিজিটগুলি মুছে ফেলার জন্য একটি টাস্ক যুক্ত করছি, তাই অ্যাপটিকে টাইমস্ট্যাম্পগুলির সাথে মোকাবিলা করতে হবে, যার অর্থ time এবং datetime ব্যবহার৷
  • কার্য সম্পাদন সম্পর্কিত দরকারী তথ্য লগ করার জন্য, আমাদের logging করতে হবে।

এই সমস্ত আমদানি যোগ করা, নীচে আপনার কোড এই পরিবর্তনের আগে এবং পরে কেমন দেখায়:

আগে:

from flask import Flask, render_template, request
from google.appengine.ext import ndb

পরে:

from datetime import datetime
import logging
import time
from flask import Flask, render_template, request
from google.appengine.api import taskqueue
from google.appengine.ext import ndb

2. পুশ টাস্ক যোগ করুন (টাস্কের জন্য ডেটা কোলেট করুন, নতুন টাস্ক সারি করুন)

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

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

  1. সাম্প্রতিক ভিজিটগুলি সম্পর্কে জিজ্ঞাসা করার সময়, সেই ভিজিটগুলিকে অবিলম্বে ফেরত দেওয়ার পরিবর্তে, সর্বশেষ Visit টাইমস্ট্যাম্প সংরক্ষণ করতে অ্যাপটি সংশোধন করুন, সবচেয়ে পুরানো প্রদর্শিত—এর থেকে পুরানো সমস্ত ভিজিট মুছে ফেলা নিরাপদ৷
  2. পেলোড হিসাবে এই টাইমস্ট্যাম্পের সাথে একটি পুশ টাস্ক তৈরি করুন এবং এটিকে টাস্ক হ্যান্ডলারের কাছে নির্দেশ করুন, একটি HTTP POST মাধ্যমে /trim এ অ্যাক্সেসযোগ্য। বিশেষত, ডেটাস্টোর টাইমস্ট্যাম্প রূপান্তর করতে স্ট্যান্ডার্ড পাইথন ইউটিলিটিগুলি ব্যবহার করুন এবং এটিকে (একটি ফ্লোট হিসাবে) টাস্কে পাঠান তবে এটি লগ করুন (স্ট্রিং হিসাবে) এবং ব্যবহারকারীর কাছে প্রদর্শনের জন্য সেই স্ট্রিংটিকে একটি সেন্টিনেল মান হিসাবে ফিরিয়ে দিন।

এই সবই fetch_visits() এ সঞ্চালিত হয়, এবং এই আপডেটগুলি করার আগে এবং পরে এটি দেখতে কেমন লাগে:

আগে:

def fetch_visits(limit):
    return (v.to_dict() for v in Visit.query().order(
            -Visit.timestamp).fetch(limit))

পরে:

def fetch_visits(limit):
    'get most recent visits and add task to delete older visits'
    data = Visit.query().order(-Visit.timestamp).fetch(limit)
    oldest = time.mktime(data[-1].timestamp.timetuple())
    oldest_str = time.ctime(oldest)
    logging.info('Delete entities older than %s' % oldest_str)
    taskqueue.add(url='/trim', params={'oldest': oldest})
    return (v.to_dict() for v in data), oldest_str

3. টাস্ক হ্যান্ডলার যোগ করুন (টাস্ক চলে গেলে কোড বলা হয়)

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

  1. "প্রাচীনতম ভিজিট" টাইমস্ট্যাম্প পেলোড বের করে
  2. সেই টাইমস্ট্যাম্পের চেয়ে পুরানো সমস্ত সত্তা খুঁজে পেতে একটি ডেটাস্টোর ক্যোয়ারী ইস্যু করে।
  3. একটি দ্রুত "কী-শুধু" ক্যোয়ারী বেছে নেয় কারণ প্রকৃত ব্যবহারকারীর ডেটার প্রয়োজন নেই৷
  4. মুছে ফেলার জন্য সত্তার সংখ্যা লগ করে (শূন্য সহ)।
  5. ndb.delete_multi() কল করে যেকোন সত্তা মুছে ফেলতে (না থাকলে এড়িয়ে যায়)।
  6. একটি খালি স্ট্রিং প্রদান করে (একটি অন্তর্নিহিত HTTP 200 রিটার্ন কোড সহ)।

আপনি নীচের trim() এ সব দেখতে পারেন। fetch_visits() ঠিক পরেই এটি main.py এ যোগ করুন :

@app.route('/trim', methods=['POST'])
def trim():
    '(push) task queue handler to delete oldest visits'
    oldest = request.form.get('oldest', type=float)
    keys = Visit.query(
            Visit.timestamp < datetime.fromtimestamp(oldest)
    ).fetch(keys_only=True)
    nkeys = len(keys)
    if nkeys:
        logging.info('Deleting %d entities: %s' % (
                nkeys, ', '.join(str(k.id()) for k in keys)))
        ndb.delete_multi(keys)
    else:
        logging.info('No entities older than: %s' % time.ctime(oldest))
    return ''   # need to return SOME string w/200

4. ওয়েব টেমপ্লেট আপডেট করুন

ওয়েব টেমপ্লেট আপডেট করুন, templates/index.html , এই Jinja2 শর্তসাপেক্ষে যদি সেই ভেরিয়েবলটি বিদ্যমান থাকে তাহলে সবচেয়ে পুরানো টাইমস্ট্যাম্প প্রদর্শন করতে:

{% if oldest is defined %}
    <b>Deleting visits older than:</b> {{ oldest }}</p>
{% endif %}

প্রদর্শিত ভিজিট তালিকার পরে কিন্তু বডি বন্ধ করার আগে এই স্নিপেটটি যোগ করুন যাতে আপনার টেমপ্লেটটি এইরকম দেখায়:

<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>

<h1>VisitMe example</h1>
<h3>Last 10 visits</h3>
<ul>
{% for visit in visits %}
    <li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>

{% if oldest is defined %}
    <b>Deleting visits older than:</b> {{ oldest }}</p>
{% endif %}
</body>
</html>

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

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

প্রয়োগ এবং আবেদন যাচাই

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

4aa8a2cb5f527079.png

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন। আপনার কোডটি এখন মডিউল 7 রেপো ফোল্ডারে যা আছে তার সাথে মেলে। এটি এখন মডিউল 8-এ ক্লাউড টাস্কে স্থানান্তরিত করার জন্য প্রস্তুত।

পরিষ্কার করুন

সাধারণ

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

সম্পূর্ণ প্রকাশের জন্য, অ্যাপ ইঞ্জিনের মতো একটি 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 তে হোস্ট করা হয়৷

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

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

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

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

এই "মাইগ্রেশন"-এ আপনি মডিউল 1 নমুনা অ্যাপে টাস্ক কিউ পুশ কিউ ব্যবহার যোগ করেছেন, দর্শকদের ট্র্যাক করার জন্য সমর্থন যোগ করেছেন, ফলে মডিউল 7 নমুনা অ্যাপ। পরবর্তী মাইগ্রেশন আপনাকে শেখায় কিভাবে অ্যাপ ইঞ্জিন পুশ টাস্ক থেকে ক্লাউড টাস্কে আপগ্রেড করতে হয় যদি আপনি এটি করতে চান। 2021 সালের পতন থেকে, পাইথন 3-এ আপগ্রেড করার সময় ব্যবহারকারীদের আর ক্লাউড টাস্কে স্থানান্তরিত করতে হবে না। পরবর্তী বিভাগে এই সম্পর্কে আরও পড়ুন।

আপনি যদি ক্লাউড টাস্কে যেতে চান তবে মডিউল 8 কোডল্যাবটি পাশে রয়েছে। এর বাইরেও বিবেচনা করার জন্য অতিরিক্ত স্থানান্তর রয়েছে, যেমন ক্লাউড ডেটাস্টোর, ক্লাউড মেমোরিস্টোর, ক্লাউড স্টোরেজ, বা ক্লাউড পাব/সাব (পুল কিউ)। এছাড়াও ক্লাউড রান এবং ক্লাউড ফাংশনে ক্রস-প্রোডাক্ট মাইগ্রেশন রয়েছে। সমস্ত সার্ভারলেস মাইগ্রেশন স্টেশন বিষয়বস্তু (কোডল্যাব, ভিডিও, সোর্স কোড [যখন উপলব্ধ]) এর ওপেন সোর্স রেপোতে অ্যাক্সেস করা যেতে পারে।

7. পাইথন 3 এ মাইগ্রেশন

2021 সালের পতনে, অ্যাপ ইঞ্জিন টিম 2য় প্রজন্মের রানটাইমগুলিতে অনেকগুলি বান্ডিল পরিষেবার সমর্থন প্রসারিত করেছে (মূলত শুধুমাত্র 1 ম প্রজন্মের রানটাইমে উপলব্ধ), যার অর্থ আপনাকে আর অ্যাপ ইঞ্জিন টাস্ক কিউয়ের মতো বান্ডিল পরিষেবাগুলি থেকে স্বতন্ত্র ক্লাউডে স্থানান্তর করতে হবে না বা Python 3 এ আপনার অ্যাপ পোর্ট করার সময় ক্লাউড টাস্কের মতো 3য়-পক্ষের সমতুল্য। অন্য কথায়, আপনি Python 3 অ্যাপ ইঞ্জিন অ্যাপে টাস্ক কিউ ব্যবহার চালিয়ে যেতে পারেন যতক্ষণ না আপনি পরবর্তী প্রজন্মের রানটাইম থেকে বান্ডেল করা পরিষেবাগুলি অ্যাক্সেস করতে কোডটি পুনরুদ্ধার করবেন।

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

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

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

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

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

মাইগ্রেশন সম্পদ

মডিউল 2 (স্টার্ট) এবং মডিউল 7 (ফিনিশ) এর জন্য রেপো ফোল্ডারগুলির লিঙ্কগুলি নীচের টেবিলে পাওয়া যাবে।

কোডল্যাব

পাইথন 2

পাইথন 3

মডিউল 1

কোড

কোড (এই টিউটোরিয়ালে বৈশিষ্ট্যযুক্ত নয়)

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

কোড

কোড (এই টিউটোরিয়ালে বৈশিষ্ট্যযুক্ত নয়)

অনলাইন সম্পদ

নীচে অনলাইন সংস্থান রয়েছে যা এই টিউটোরিয়ালের জন্য প্রাসঙ্গিক হতে পারে:

অ্যাপ ইঞ্জিন টাস্ক সারি

অ্যাপ ইঞ্জিন প্ল্যাটফর্ম

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

ভিডিও

লাইসেন্স

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