পাইথনে HTTP ক্লাউড ফাংশন

১. ভূমিকা

b158ce75c3cccd6d.png

পাইথন একটি জনপ্রিয় ওপেন সোর্স প্রোগ্রামিং ভাষা যা ডেটা সায়েন্টিস্ট, ওয়েব অ্যাপ্লিকেশন ডেভেলপার, সিস্টেম অ্যাডমিনিস্ট্রেটর এবং আরও অনেকে ব্যবহার করেন।

ক্লাউড ফাংশনস হলো একটি ইভেন্ট-ড্রাইভেন সার্ভারলেস কম্পিউট প্ল্যাটফর্ম। ক্লাউড ফাংশনস আপনাকে রিসোর্স প্রভিশনিং বা পরিবর্তনশীল চাহিদা মেটাতে স্কেলিং করার চিন্তা ছাড়াই আপনার কোড লেখার সুযোগ দেয়।

ক্লাউড ফাংশন দুই প্রকারের হয়:

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

efb3268e3b74ed4f.png

এই কোডল্যাবটি আপনাকে পাইথনে নিজের ক্লাউড ফাংশন তৈরি করার পদ্ধতি ধাপে ধাপে শিখিয়ে দেবে।

আপনি যা তৈরি করবেন

এই কোডল্যাবে, আপনি এমন একটি ক্লাউড ফাংশন প্রকাশ করবেন যা HTTP-এর মাধ্যমে কল করা হলে "Python Powered" লোগোটি প্রদর্শন করে।

a7aaf656b78050fd.png

আপনি যা শিখবেন

  • কীভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয়।
  • আর্গুমেন্ট গ্রহণকারী একটি HTTP ক্লাউড ফাংশন কীভাবে লিখতে হয়।
  • একটি HTTP ক্লাউড ফাংশন কীভাবে পরীক্ষা করবেন
  • ফাংশনটি পরীক্ষা করার জন্য কীভাবে একটি স্থানীয় পাইথন HTTP সার্ভার চালাবেন।
  • কীভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয় যা একটি ছবি রিটার্ন করে।

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। 853e55310c205094.png .

3c1dabeca90e44e5.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

9f0e51b578fecce5.png

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

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

ক্লাউড ফাংশন এবং ক্লাউড বিল্ড এপিআই সক্রিয় আছে কিনা তা নিশ্চিত করুন।

Cloud Functions এবং Cloud Build API-গুলো সক্রিয় আছে কিনা তা নিশ্চিত করতে Cloud Shell থেকে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable \
  cloudfunctions.googleapis.com \
  cloudbuild.googleapis.com

দ্রষ্টব্য: gcloud functions deploy কমান্ডের মাধ্যমে ক্লাউড বিল্ডকে কল করা হবে এবং এটি স্বয়ংক্রিয়ভাবে আপনার কোডকে একটি কন্টেইনার ইমেজে বিল্ড করবে।

সোর্স কোড ডাউনলোড করুন

ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডগুলো চালান:

REPO_NAME="codelabs"
REPO_URL="https://github.com/GoogleCloudPlatform/$REPO_NAME"
SOURCE_DIR="cloud-functions-python-http"

git clone --no-checkout --filter=blob:none --depth=1 $REPO_URL
cd $REPO_NAME
git sparse-checkout set $SOURCE_DIR
git checkout
cd $SOURCE_DIR

সোর্স ডিরেক্টরির বিষয়বস্তু পরীক্ষা করে দেখুন:

ls

আপনার কাছে নিম্নলিখিত ফাইলগুলো থাকা উচিত:

main.py  python-powered.png  test_main.py  web_app.py

৩. HTTP ক্লাউড ফাংশন পরিচিতি

পাইথনে HTTP ক্লাউড ফাংশনগুলো সাধারণ পাইথন ফাংশনের মতোই লেখা হয়। ফাংশনটিকে অবশ্যই একটিমাত্র flask.Request আর্গুমেন্ট গ্রহণ করতে হবে, যার নাম সাধারণত ` request হয়ে থাকে।

main.py

import flask


def hello_world(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - "Hello World! 👋"
    """
    response = "Hello World! 👋"

    return flask.Response(response, mimetype="text/plain")

# ...

আপনি আপনার পছন্দের কমান্ড লাইন এডিটর (ন্যানো, ভিম, বা ইম্যাক্স) দিয়ে ফাইলটি খুলতে পারেন। এছাড়াও, সোর্স ডিরেক্টরিটিকে ওয়ার্কস্পেস হিসেবে সেট করার পর আপনি এটি ক্লাউড শেল এডিটরেও খুলতে পারেন:

cloudshell open-workspace .

চলুন, gcloud functions deploy কমান্ড ব্যবহার করে এই ফাংশনটিকে একটি HTTP ক্লাউড ফাংশন হিসেবে ডিপ্লয় করি:

FUNCTION_NAME="hello_world"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

gcloud functions deploy অপশনগুলো সম্পর্কে নোট:

  • --runtime : এটি ল্যাঙ্গুয়েজ রানটাইম নির্দিষ্ট করে। পাইথনের জন্য, এটি বর্তমানে python37 , python38 , python39 , python310 , বা python312 হতে পারে। রানটাইমসমূহ দেখুন।
  • --trigger-http : ফাংশনটিকে একটি এন্ডপয়েন্ট নির্ধারণ করে দেওয়া হবে। এই এন্ডপয়েন্টে পাঠানো HTTP রিকোয়েস্ট (POST, PUT, GET, DELETE, এবং OPTIONS) ফাংশনটিকে কার্যকর করবে।
  • --allow-unauthenticated : ফাংশনটি পাবলিক হবে, ফলে অথেনটিকেশন যাচাই না করেই সকল কলারকে অনুমতি দেওয়া হবে।
  • আরও জানতে, gcloud functions deploy দেখুন।

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

URL=$(gcloud functions describe $FUNCTION_NAME --format "value(httpsTrigger.url)")
curl -w "\n" $URL

আপনি নিম্নলিখিত ফলাফলটি পাবেন:

Hello World! 👋

৪. আর্গুমেন্ট গ্রহণকারী একটি HTTP ক্লাউড ফাংশন লেখা

ফাংশনগুলো আর্গুমেন্ট গ্রহণ করলে আরও বেশি বহুমুখী হয়ে ওঠে। চলুন hello_name একটি নতুন ফাংশন সংজ্ঞায়িত করি যা একটি name প্যারামিটার সমর্থন করে:

main.py

# ...

def hello_name(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - "Hello {NAME}! 🚀" if "name=NAME" is defined in the GET request
    - "Hello World! 🚀" otherwise
    """
    name = request.args.get("name", "World")
    response = f"Hello {name}! 🚀"

    return flask.Response(response, mimetype="text/plain")

# ...

চলুন এই নতুন ফাংশনটি স্থাপন করি:

FUNCTION_NAME="hello_name"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

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

URL=$(gcloud functions describe $FUNCTION_NAME --format "value(httpsTrigger.url)")
curl -w "\n" $URL

আপনার ডিফল্ট ফলাফল পাওয়া উচিত:

Hello World! 🚀

আপনি ডিফল্ট ফলাফল পাচ্ছেন কারণ name আর্গুমেন্টটি সেট করা নেই। URL-এ একটি প্যারামিটার যোগ করুন:

curl -w "\n" $URL?name=YOUR%20NAME

এবার আপনি আপনার পছন্দসই উত্তরটি পাবেন:

Hello YOUR NAME! 🚀

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

৫. লিখিত পরীক্ষা

পাইথনের HTTP ক্লাউড ফাংশনগুলো স্ট্যান্ডার্ড লাইব্রেরির unittest মডিউল ব্যবহার করে পরীক্ষা করা হয়। আপনার ফাংশন পরীক্ষা করার জন্য কোনো এমুলেটর বা অন্য কোনো সিমুলেশন চালানোর প্রয়োজন নেই—শুধু সাধারণ পাইথন কোডই যথেষ্ট।

hello_world এবং hello_name ফাংশনগুলোর জন্য একটি টেস্ট দেখতে এইরকম হয়:

test_main.py

import unittest
import unittest.mock

import main


class TestHello(unittest.TestCase):
    def test_hello_world(self):
        request = unittest.mock.Mock()

        response = main.hello_world(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == "Hello World! 👋"

    def test_hello_name_no_name(self):
        request = unittest.mock.Mock(args={})

        response = main.hello_name(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == "Hello World! 🚀"

    def test_hello_name_with_name(self):
        name = "FirstName LastName"
        request = unittest.mock.Mock(args={"name": name})

        response = main.hello_name(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == f"Hello {name}! 🚀"
  1. অন্যান্য পাইথন ফাইলের মতোই পাইথন টেস্ট লেখা হয়। এগুলি কিছু ইম্পোর্ট দিয়ে শুরু হয়, তারপর ক্লাস এবং ফাংশন সংজ্ঞায়িত করা হয়।
  2. টেস্ট ডিক্লারেশনটি class TestHello(TestCase) আকারে হবে। এটি অবশ্যই এমন একটি ক্লাস হতে হবে যা unittest.TestCase থেকে ইনহেরিট করে।
  3. টেস্ট ক্লাসে মেথড থাকে, যেগুলোর প্রত্যেকটি অবশ্যই test_ দিয়ে শুরু হতে হবে এবং যেগুলো স্বতন্ত্র টেস্ট কেস উপস্থাপন করে।
  4. প্রতিটি টেস্ট কেস আমাদের একটি ফাংশনকে পরীক্ষা করে, যেখানে request প্যারামিটারটিকে মক করা হয় (অর্থাৎ, পরীক্ষার জন্য প্রয়োজনীয় নির্দিষ্ট ডেটা সহ একটি নকল অবজেক্ট দিয়ে এটিকে প্রতিস্থাপন করা হয়)।
  5. প্রতিটি ফাংশন কল করার পর, পরীক্ষাটি HTTP প্রতিক্রিয়াটি যাচাই করে নিশ্চিত হয় যে এটি আমাদের প্রত্যাশা অনুযায়ীই ছিল।

যেহেতু main.py flask এর উপর নির্ভরশীল, তাই আপনার টেস্ট এনভায়রনমেন্টে Flask ফ্রেমওয়ার্কটি ইনস্টল করা আছে কিনা তা নিশ্চিত করুন:

pip install flask

Flask ইনস্টল করলে নিম্নলিখিতের মতো একটি ফলাফল পাওয়া যায়:

Collecting flask
...
Successfully installed ... flask-3.0.2 ...

এই পরীক্ষাগুলো স্থানীয়ভাবে চালান:

python -m unittest

তিনটি ইউনিট টেস্টই পাস করতে হবে:

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

এরপরে, আপনি একটি নতুন ফাংশন তৈরি করবেন যা "Python Powered" লোগোটি রিটার্ন করবে।

৬. পাইথন চালিত HTTP ক্লাউড ফাংশন লেখা

চলুন প্রতিটি অনুরোধের জন্য "Python Powered" ছবিটি রিটার্ন করে নতুন ফাংশনটিকে আরেকটু মজাদার করে তুলি:

a7aaf656b78050fd.png

নিম্নলিখিত তালিকাটিতে এটি সম্পন্ন করার জন্য কোড দেখানো হলো:

main.py

# ...

def python_powered(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - The official "Python Powered" logo
    """
    return flask.send_file("python-powered.png")

একটি নতুন python_powered ফাংশন স্থাপন করুন:

FUNCTION_NAME="python_powered"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

ফাংশনটি পরীক্ষা করার জন্য, উপরের কমান্ড আউটপুটে প্রদর্শিত httpsTrigger.url ইউআরএলটিতে ক্লিক করুন। সবকিছু ঠিকঠাক কাজ করলে, আপনি একটি নতুন ব্রাউজার ট্যাবে "Python Powered" লোগোটি দেখতে পাবেন!

এরপরে, আপনি একটি অ্যাপ তৈরি করবেন যাতে ডেপ্লয়মেন্টের আগে আপনার ফাংশনটি স্থানীয়ভাবে চালিয়ে পরীক্ষা করতে পারেন।

৭. স্থানীয়ভাবে ফাংশনটি চালানো

একটি ওয়েব অ্যাপ তৈরি করে এবং একটি রাউটে আপনার ফাংশনটি কল করার মাধ্যমে আপনি স্থানীয়ভাবে একটি HTTP ফাংশন চালাতে পারেন। আপনি এটিকে আপনার ফাংশনের একই ডিরেক্টরিতে যুক্ত করতে পারেন। web_app.py নামের ফাইলটিতে নিম্নলিখিত বিষয়বস্তু রয়েছে:

web_app.py

import flask

import main

app = flask.Flask(__name__)


@app.get("/")
def index():
    return main.python_powered(flask.request)


if __name__ == "__main__":
    # Local development only
    # Run "python web_app.py" and open http://localhost:8080
    app.run(host="localhost", port=8080, debug=True)
  1. এই ফাইলটি একটি ফ্লাস্ক অ্যাপ্লিকেশন তৈরি করে।
  2. এটি বেস ইউআরএল-এ একটি রুট নিবন্ধন করে, যা index() নামক একটি ফাংশন দ্বারা পরিচালিত হয়।
  3. এরপর index() ফাংশনটি আমাদের python_powered ফাংশনটিকে কল করে এবং এতে বর্তমান রিকোয়েস্টটি পাস করে দেয়।

আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে Flask ফ্রেমওয়ার্কটি ইনস্টল করা আছে কিনা তা নিশ্চিত করুন:

pip install flask

Flask ইনস্টল করলে নিম্নলিখিতের মতো একটি ফলাফল পাওয়া যায়:

Collecting flask
...
Successfully installed ... flask-3.0.2 ...

এই অ্যাপ্লিকেশনটি স্থানীয়ভাবে চালানোর জন্য, নিম্নলিখিত কমান্ডটি চালান:

python web_app.py

এখন আপনার ব্রাউজারে ওয়েব অ্যাপটি পরীক্ষা করার জন্য ক্লাউড শেল ওয়েব প্রিভিউ ব্যবহার করুন। ক্লাউড শেলে, 'ওয়েব প্রিভিউ' বোতামে ক্লিক করুন এবং 'পোর্ট ৮০৮০-তে প্রিভিউ' নির্বাচন করুন:

6c9ff9e5c692c58e.gif

ক্লাউড শেল তার প্রক্সি সার্ভিসে প্রিভিউ ইউআরএলটি একটি নতুন ব্রাউজার উইন্ডোতে খোলে। এই ওয়েব প্রিভিউটি শুধুমাত্র আপনার ইউজার অ্যাকাউন্টের জন্য HTTPS-এর মাধ্যমে অ্যাক্সেস সীমাবদ্ধ করে। সবকিছু ঠিকঠাক কাজ করলে, আপনি "Python Powered" লোগোটি দেখতে পাবেন!

8e5c3ead11cfd103.png

৮. অভিনন্দন!

b158ce75c3cccd6d.png

আপনি ফ্লাস্ক ফ্রেমওয়ার্ক ব্যবহার করে ওয়েব অনুরোধগুলি পরিচালনা করার জন্য প্রচলিত ফাংশনগুলির সাহায্যে HTTP ক্লাউড ফাংশন স্থাপন করেছেন।

ক্লাউড ফাংশনের মূল্য নির্ধারণ করা হয় আপনার ফাংশনটি কত ঘন ঘন ব্যবহৃত হয় তার উপর ভিত্তি করে, যার মধ্যে কম ব্যবহৃত ফাংশনগুলোর জন্য একটি ফ্রি টিয়ারও রয়েছে। আপনার ক্লাউড ফাংশনগুলোর টেস্টিং শেষ হয়ে গেলে, আপনি gcloud ব্যবহার করে সেগুলো ডিলিট করে দিতে পারেন।

gcloud functions delete hello_world --quiet
gcloud functions delete hello_name --quiet
gcloud functions delete python_powered --quiet

আপনি গুগল ক্লাউড কনসোল থেকেও ফাংশনগুলো মুছে ফেলতে পারেন।

আমরা আশা করি আপনি পাইথনে ক্লাউড ফাংশন ব্যবহার করে আনন্দ পাবেন!