সময়সূচী ফাংশন


আপনি যদি নির্দিষ্ট সময়ে চালানোর জন্য ফাংশন নির্ধারণ করতে চান, firebase-functions/v2/scheduler দ্বারা প্রদত্ত onSchedule হ্যান্ডলার ব্যবহার করুন। এই ফাংশনগুলি Cloud Scheduler ব্যবহার করে আপনার সংজ্ঞায়িত সময় বা ব্যবধানে ফাংশন লজিক চালু করতে।

আপনি শুরু করার আগে

আপনার ফায়ারবেস প্রকল্পে এই সমাধানটি ব্যবহার করতে, আপনার প্রকল্পটি অবশ্যই ব্লেজ মূল্য পরিকল্পনায় থাকতে হবে। যদি এটি ইতিমধ্যেই Blaze প্ল্যানে না থাকে, তাহলে আপনার মূল্য নির্ধারণের পরিকল্পনা আপগ্রেড করুন

যদিও বিলিং প্রয়োজন, আপনি সামগ্রিক খরচ পরিচালনাযোগ্য হবে বলে আশা করতে পারেন, কারণ প্রতিটি Cloud Scheduler কাজের জন্য প্রতি মাসে $0.10 (USD) খরচ হয় এবং প্রতি Google অ্যাকাউন্টে তিনটি কাজের ভাতা রয়েছে, কোনো চার্জ ছাড়াই৷ আপনার অনুমান করা ব্যবহারের উপর ভিত্তি করে একটি খরচ অনুমান তৈরি করতে ব্লেজ প্রাইসিং ক্যালকুলেটর ব্যবহার করুন।

আপনার প্রজেক্টের জন্য Cloud Scheduler এপিআই সক্ষম করা আবশ্যক। বেশিরভাগ ফায়ারবেস প্রকল্পের জন্য এটি ইতিমধ্যেই সক্রিয় করা উচিত; আপনি Google ক্লাউড কনসোলে যাচাই করতে পারেন।

একটি নির্ধারিত ফাংশন লিখুন

Cloud Functions for Firebase এ, সময়সূচী লজিক আপনার ফাংশন কোডে থাকে, কোনো বিশেষ স্থাপন-সময়ের প্রয়োজনীয়তা ছাড়াই। উদাহরণস্বরূপ, প্রতিদিন একবার নিষ্ক্রিয় ব্যবহারকারী অ্যাকাউন্টগুলি পরিষ্কার করতে, আপনি নিম্নলিখিত আমদানি বিবৃতি দিয়ে শুরু করে একটি ফাংশন লিখতে পারেন:

Node.js

// The Cloud Functions for Firebase SDK to set up triggers and logging.
const {onSchedule} = require("firebase-functions/v2/scheduler");
const {logger} = require("firebase-functions");

// The Firebase Admin SDK to delete inactive users.
const admin = require("firebase-admin");
admin.initializeApp();

// The es6-promise-pool to limit the concurrency of promises.
const PromisePool = require("es6-promise-pool").default;
// Maximum concurrent account deletions.
const MAX_CONCURRENT = 3;

পাইথন

# The Cloud Functions for Firebase SDK to set up triggers and logging.
from firebase_functions import scheduler_fn

# The Firebase Admin SDK to delete users.
import firebase_admin
from firebase_admin import auth

firebase_admin.initialize_app()

তারপরে, আপনি একটি Cloud Scheduler টাস্ক শুরু করতে onSchedule ব্যবহার করতে পারেন:

Node.js

// Run once a day at midnight, to clean up the users
// Manually run the task here https://console.cloud.google.com/cloudscheduler
exports.accountcleanup = onSchedule("every day 00:00", async (event) => {
  // Fetch all user details.
  const inactiveUsers = await getInactiveUsers();

  // Use a pool so that we delete maximum `MAX_CONCURRENT` users in parallel.
  const promisePool = new PromisePool(
      () => deleteInactiveUser(inactiveUsers),
      MAX_CONCURRENT,
  );
  await promisePool.start();

  logger.log("User cleanup finished");
});

পাইথন

# Run once a day at midnight, to clean up inactive users.
# Manually run the task here https://console.cloud.google.com/cloudscheduler
@scheduler_fn.on_schedule(schedule="every day 00:00")
def accountcleanup(event: scheduler_fn.ScheduledEvent) -> None:
    """Delete users who've been inactive for 30 days or more."""
    user_page: auth.ListUsersPage | None = auth.list_users()
    while user_page is not None:
        inactive_uids = [
            user.uid for user in user_page.users if is_inactive(user, timedelta(days=30))
        ]
        auth.delete_users(inactive_uids)
        user_page = user_page.get_next_page()

ইউনিক্স ক্রন্টাব এবং App Engine সিনট্যাক্স উভয়ই Cloud Scheduler দ্বারা সমর্থিত। উদাহরণস্বরূপ, ক্রন্টাব ব্যবহার করতে, এইরকম কিছু করুন:

Node.js

exports.scheduledFunctionCrontab = onSchedule("5 11 * * *", async (event) => {
  // ...
});

পাইথন

@scheduler_fn.on_schedule(schedule="5 11 * * *")

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

যখন আপনি একটি নির্ধারিত ফাংশন স্থাপন করেন, একটি শিডিউলার কাজ এবং একটি HTTP ফাংশন স্বয়ংক্রিয়ভাবে তৈরি হয়। Firebase CLI ফাংশনের নামের প্রতিধ্বনি করে, এবং আপনি Google ক্লাউড কনসোলে কাজ এবং ফাংশন দেখতে পারেন। নিম্নলিখিত কনভেনশন অনুসারে বিষয়টির নামকরণ করা হয়েছে:

ফায়ারবেস-শিডিউল- function_name - region

যেমন:

firebase-shedule-accountcleanup-us-east1.

নির্ধারিত সময়ে, ডিফল্ট গণনা পরিষেবা অ্যাকাউন্ট সংশ্লিষ্ট HTTP ফাংশনকে আহ্বান করে। এর মানে হল যে শুধুমাত্র যুক্ত Cloud Scheduler কাজের ফাংশন চালানোর অনুমতি আছে।