FastAPI অ্যাপ্লিকেশনগুলি pydantic-settings (BaseSettings) দিয়ে কনফিগারেশন পরিচালনা করে — একটি ক্লাস যা পরিবেশ ভেরিয়েবল (এবং .env ফাইল) থেকে কনফিগ পড়ে সহ, কোড থেকে সিক্রেট রাখে এবং স্টার্টআপে কনফিগ সঠিক তা নিশ্চিত করে।
FastAPI অ্যাপ্লিকেশনগুলি pydantic-settings (BaseSettings) দিয়ে কনফিগারেশন পরিচালনা করে — একটি ক্লাস যা পরিবেশ ভেরিয়েবল (এবং .env ফাইল) থেকে কনফিগ পড়ে সহ, কোড থেকে সিক্রেট রাখে এবং স্টার্টআপে কনফিগ সঠিক তা নিশ্চিত করে।
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_name: str = "My API"
database_url: str # required — must be provided
secret_key: str # required (a secret)
debug: bool = False
max_connections: int = 10
class Config:
env_file = ".env" # also read from a .env file
settings = Settings() # reads & VALIDATES env vars at startup
BaseSettings স্বয়ংক্রিয়ভাবে প্রতিটি ফিল্ড একটি মেলে এমন পরিবেশ ভেরিয়েবল থেকে পড়ে (যেমন DATABASE_URL), টাইপ রূপান্তরিত করে ("true" → bool, "10" → int), এবং যাচাই করে — একটি অনুপস্থিত প্রয়োজনীয় মান বা ভুল টাইপ স্টার্টআপে অবিলম্বে ব্যর্থ হয় স্পষ্ট ত্রুটি সহ (দ্রুত ব্যর্থতা)।
from functools import lru_cache
from fastapi import Depends
@lru_cache # create the Settings once (cached)
def get_settings():
return Settings()
@app.get("/info")
def info(settings: Settings = Depends(get_settings)):
return {"app": settings.app_name, "debug": settings.debug}
ক্যাশ করা নির্ভরতার মাধ্যমে সেটিংস ইনজেক্ট করা সেগুলোকে পরীক্ষাযোগ্য করে তোলে (পরীক্ষায় ওভাররাইড করুন) এবং একটি একক উদাহরণ নিশ্চিত করে।
# .env — local config, GITIGNORED (never commit secrets)
DATABASE_URL=postgresql://localhost/mydb
SECRET_KEY=dev-secret
DEBUG=true
✓ Keep secrets in env vars / .env (gitignored); commit a .env.example documenting keys
✓ In production, inject config via the platform's environment / secret manager
✓ Validation at startup catches misconfiguration immediately (not deep in a request)
সঠিক সেটিংস ম্যানেজমেন্ট উভয়ই একটি অপারেশনাল প্রয়োজনীয়তা (অ্যাপ্লিকেশনগুলির উন্নয়ন/স্টেজিং/প্রোডাকশন জুড়ে বিভিন্ন কনফিগ প্রয়োজন) এবং একটি নিরাপত্তা প্রয়োজনীয়তা (ডাটাবেস URL এবং কী-এর মতো সিক্রেটস কখনও সোর্স কন্ট্রোলে হার্ডকোড করা উচিত নয় — একটি সাধারণ, গুরুতর লঙ্ঘন)।
Pydantic এর BaseSettings অনুবাদমূলক FastAPI সমাধান প্রদান করে, এবং এটি বোঝা গুরুত্বপূর্ণ দৈনন্দিন জ্ঞান।
এর মূল সুবিধা: পরিবেশ ভেরিয়েবল থেকে কনফিগ পড়া (কোড থেকে সিক্রেট রাখা, বারো-ফ্যাক্টর পদ্ধতি) স্বয়ংক্রিয় টাইপ রূপান্তর এবং যাচাইকরণ সহ — তাই ভুল কনফিগারেশন স্টার্টআপে দ্রুত ব্যর্থ হয় স্পষ্ট ত্রুটি সহ একটি বিভ্রান্তিকর রানটাইম ব্যর্থতার পরিবর্তে।
নির্ভরতা ইনজেকশনের সাথে (সেটিংস পরীক্ষাযোগ্য এবং সিঙ্গেলটন করে) এবং স্থানীয় উন্নয়নের জন্য gitignored .env ফাইলের অনুশীলনের সাথে, এটি আপনাকে নিরাপদ, যাচাইকৃত, পরিবেশ-উপযুক্ত কনফিগারেশন দেয়।
সেটিংস সংজ্ঞায়িত করা, সেগুলো DI-র মাধ্যমে ব্যবহার করা, এবং নিরাপদভাবে সিক্রেটস পরিচালনা করা জানা উৎপাদন-প্রস্তুত FastAPI অ্যাপ্লিকেশন তৈরির জন্য মৌলিক।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন