Flask অ্যাপ্লিকেশন তৈরির সময় কনফিগারেশন সেটআপ অত্যন্ত গুরুত্বপূর্ণ। Flask বিভিন্ন কনফিগারেশন অপশন সরবরাহ করে যা অ্যাপ্লিকেশনের কার্যকারিতা নিয়ন্ত্রণ করতে সহায়তা করে।
কনফিগারেশন সেট করার পদ্ধতি
Flask-এ কনফিগারেশন সেট করার জন্য প্রধানত তিনটি পদ্ধতি রয়েছে:
- Python ফাইল থেকে কনফিগারেশন লোড করা
- পরিবেশ ভেরিয়েবল ব্যবহার করে কনফিগারেশন সেট করা
- ডায়নামিক বা রানটাইম কনফিগারেশন
Python ফাইল থেকে কনফিগারেশন লোড করা
ধাপ ১: config.py ফাইল তৈরি
প্রজেক্ট ডিরেক্টরিতে config.py নামে একটি ফাইল তৈরি করুন এবং নিচের মতো কনফিগারেশন সেট করুন:
class Config:
DEBUG = True # ডিবাগ মোড চালু
SECRET_KEY = 'আপনার-গোপন-কী' # সিকিউরিটি ফিচার যেমন সেশন বা ফর্মের জন্য
SQLALCHEMY_DATABASE_URI = 'sqlite:///app.db' # ডাটাবেস URI
SQLALCHEMY_TRACK_MODIFICATIONS = False # অতিরিক্ত ওভারহেড কমাতে False রাখুন
ধাপ ২: app.py ফাইলে কনফিগারেশন লোড
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config) # Config ক্লাস থেকে কনফিগারেশন লোড
পরিবেশ ভেরিয়েবল ব্যবহার করে কনফিগারেশন
ধাপ ১: পরিবেশ ভেরিয়েবল সেট করা
টার্মিনালে নিচের মতো পরিবেশ ভেরিয়েবল সেট করুন:
export FLASK_ENV=development # Mac/Linux
set FLASK_ENV=development # Windows
ধাপ ২: Flask অ্যাপ চালু
flask run
FLASK_ENV=development: ডেভেলপমেন্ট মোড চালু করে, যেখানে ডিবাগ টুলস সক্রিয় থাকে।FLASK_ENV=production: প্রোডাকশন মোড চালু করে, যেখানে ডিবাগার নিষ্ক্রিয় থাকে।FLASK_APP=app.py: Flask অ্যাপের প্রধান ফাইল নির্ধারণ করে।
রানটাইম কনফিগারেশন
Flask রানটাইমে ডিকশনারি ব্যবহার করে কনফিগারেশন সেট করতে পারে।
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'আপনার-গোপন-কী'
Flask এর প্রধান কনফিগারেশন অপশন
| অপশন | অর্থ |
|---|---|
DEBUG | ডিবাগ মোড সক্রিয় করে। কোড পরিবর্তন করলে অ্যাপ পুনরায় লোড হয়। |
SECRET_KEY | ক্রিপ্টোগ্রাফিক টোকেন তৈরি করতে ব্যবহৃত। সিকিউরিটি ফিচারের জন্য প্রয়োজন। |
FLASK_ENV | অ্যাপের পরিবেশ নির্ধারণ করে (ডেভেলপমেন্ট/প্রোডাকশন)। |
SQLALCHEMY_DATABASE_URI | ডাটাবেসের URI সংজ্ঞায়িত করে। |
SQLALCHEMY_TRACK_MODIFICATIONS | ডাটাবেস পরিবর্তনের ট্র্যাকিং চালু বা বন্ধ করে। |
TESTING | টেস্টিং মোড সক্রিয় করে। |
JSONIFY_PRETTYPRINT_REGULAR | JSON রেসপন্স প্রিন্ট করার সময় সুন্দরভাবে ফরম্যাট করে। |
ডিফল্ট কনফিগারেশন
Flask কিছু ডিফল্ট কনফিগারেশন ব্যবহার করে। নিচে একটি উদাহরণ দেওয়া হলো:
print(app.config)
এর মাধ্যমে সমস্ত ডিফল্ট কনফিগারেশন দেখা যাবে। উদাহরণ:
{
'DEBUG': False,
'TESTING': False,
'SECRET_KEY': None,
'SESSION_COOKIE_NAME': 'session',
...
}
কাস্টম কনফিগারেশন সেট করা
config.py ফাইলে কাস্টম কনফিগারেশন:
class CustomConfig:
DEBUG = False
CUSTOM_VARIABLE = "This is a custom config"
app.py ফাইলে লোড:
from config import CustomConfig
app.config.from_object(CustomConfig)
print(app.config['CUSTOM_VARIABLE'])
Flask অ্যাপ চালানোর সময় পরিবেশ অনুযায়ী কনফিগারেশন
ডেভেলপমেন্ট কনফিগারেশন:
class DevelopmentConfig:
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///dev.db'
প্রোডাকশন কনফিগারেশন:
class ProductionConfig:
DEBUG = False
SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/prod_db'
কনফিগারেশন লোড করার সময়:
import os
if os.environ.get('FLASK_ENV') == 'development':
app.config.from_object('config.DevelopmentConfig')
else:
app.config.from_object('config.ProductionConfig')
Flask কনফিগারেশন ব্যবস্থাপনার সুবিধা
- মডুলারিটি: কোডকে ডিফল্ট এবং কাস্টম কনফিগারেশনে ভাগ করা সহজ।
- পরিবেশ অনুযায়ী পরিবর্তন: ডেভেলপমেন্ট এবং প্রোডাকশন কনফিগারেশন সহজেই আলাদা করা যায়।
- নিরাপত্তা: সিক্রেট কী এবং অন্যান্য সংবেদনশীল ডেটা কনফিগারেশন ফাইলে রাখা যায়।
- ডিবাগিং সহজ: ডিফল্ট ডিবাগ মোড এবং টেস্টিং ফিচার।
Flask কনফিগারেশন সঠিকভাবে সেটআপ করা অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ। এটি অ্যাপ্লিকেশনের কার্যকারিতা এবং নিরাপত্তা বাড়ায়।
Flask অ্যাপ্লিকেশনের কনফিগারেশন সেটিংস অ্যাপের কার্যকারিতা, ডিবাগিং, সিকিউরিটি এবং পরিবেশভিত্তিক পরিচালনা নিশ্চিত করে। Flask কনফিগারেশন সেটিংস কাস্টমাইজ করা যায় Python ফাইল, পরিবেশ ভেরিয়েবল, অথবা রানটাইম কোড ব্যবহার করে।
কনফিগারেশন সেট করার পদ্ধতি
১. Python ফাইল ব্যবহার করে
Flask অ্যাপ্লিকেশনকে Python ফাইলের মাধ্যমে কনফিগারেশন প্রদান করা যায়। সাধারণত, একটি config.py ফাইল ব্যবহার করা হয়।
উদাহরণ:
class Config:
DEBUG = False
TESTING = False
SECRET_KEY = 'আপনার-গোপন-কী'
SQLALCHEMY_DATABASE_URI = 'sqlite:///app.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
Flask অ্যাপ-এ কনফিগারেশন লোড:
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
২. পরিবেশ ভেরিয়েবল ব্যবহার করে
কিছু কনফিগারেশন পরিবেশ ভেরিয়েবলের মাধ্যমে সেট করা যায়। এটি প্রোডাকশন পরিবেশের জন্য খুবই কার্যকর।
উদাহরণ:
export FLASK_ENV=development
export SECRET_KEY="আপনার-গোপন-কী"
Flask অ্যাপ-এ লোড:
import os
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'ডিফল্ট-গোপন-কী')
৩. রানটাইম সেটিংস
রানটাইমে সরাসরি Flask অ্যাপ্লিকেশনের কনফিগারেশন সেট করা যায়।
উদাহরণ:
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///runtime.db'
Flask এর প্রধান কনফিগারেশন সেটিংস
Flask বিভিন্ন গুরুত্বপূর্ণ কনফিগারেশন সেটিংস সরবরাহ করে। এখানে প্রধান কয়েকটি উল্লেখ করা হলো:
| কনফিগারেশন সেটিংস | অর্থ |
|---|---|
DEBUG | ডিবাগ মোড সক্রিয় করে, যাতে ত্রুটি ডিবাগিং সহজ হয়। |
TESTING | টেস্টিং মোড চালু করে। টেস্ট কেস রান করার সময় এটি ব্যবহার হয়। |
SECRET_KEY | ক্রিপ্টোগ্রাফিক ফিচারের জন্য গোপন কী, যেমন সেশন বা ফর্ম সিকিউরিটি। |
SESSION_COOKIE_NAME | সেশনের জন্য ব্যবহৃত কুকির নাম নির্ধারণ করে। |
SQLALCHEMY_DATABASE_URI | ডাটাবেস URI সংজ্ঞায়িত করে। |
SQLALCHEMY_TRACK_MODIFICATIONS | ডাটাবেস পরিবর্তনের ট্র্যাকিং সক্রিয় বা নিষ্ক্রিয় করে। |
JSONIFY_PRETTYPRINT_REGULAR | JSON রেসপন্স সুন্দরভাবে ফরম্যাট করে। |
MAX_CONTENT_LENGTH | রিকোয়েস্ট বডির সর্বাধিক আকার সীমিত করে। |
SERVER_NAME | ডিফল্ট সার্ভার হোস্ট এবং পোর্ট নির্ধারণ করে। |
মাল্টি-এনভায়রনমেন্ট কনফিগারেশন
১. ডেভেলপমেন্ট কনফিগারেশন
class DevelopmentConfig:
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///dev.db'
SECRET_KEY = 'ডেভেলপমেন্ট-গোপন-কী'
২. প্রোডাকশন কনফিগারেশন
class ProductionConfig:
DEBUG = False
SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/prod_db'
SECRET_KEY = 'প্রোডাকশন-গোপন-কী'
৩. অ্যাপ্লিকেশনে পরিবেশ অনুযায়ী লোড
import os
if os.environ.get('FLASK_ENV') == 'development':
app.config.from_object('config.DevelopmentConfig')
else:
app.config.from_object('config.ProductionConfig')
ডিফল্ট কনফিগারেশন দেখা
Flask অ্যাপ্লিকেশন চালু করার পরে, ডিফল্ট কনফিগারেশন দেখতে পারেন:
print(app.config)
কাস্টম কনফিগারেশন ভেরিয়েবল
আপনার নিজস্ব কনফিগারেশন ভেরিয়েবল সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ:
class Config:
CUSTOM_VARIABLE = "এটি একটি কাস্টম কনফিগারেশন"
অ্যাপ্লিকেশন থেকে অ্যাক্সেস করুন:
custom_value = app.config['CUSTOM_VARIABLE']
print(custom_value)
Flask অ্যাপ্লিকেশন কনফিগারেশন ব্যবস্থাপনার সুবিধা
- পরিবেশ অনুযায়ী পরিচালনা: ডেভেলপমেন্ট, টেস্টিং, এবং প্রোডাকশন পরিবেশ আলাদা করা সহজ।
- নিরাপত্তা: সংবেদনশীল তথ্য, যেমন API কী এবং সিক্রেট কী নিরাপদে সংরক্ষণ করা যায়।
- ডিবাগিং সহজ: ডেভেলপমেন্ট কনফিগারেশনের মাধ্যমে কোড ডিবাগ করা সহজ।
- রিইউজ্যাবিলিটি: কনফিগারেশন ফাইল ব্যবহারের মাধ্যমে বিভিন্ন অ্যাপ্লিকেশনে একই সেটিংস পুনরায় ব্যবহার করা যায়।
Flask কনফিগারেশন সেটিংস সঠিকভাবে পরিচালনা করলে অ্যাপ্লিকেশনের কার্যকারিতা এবং নিরাপত্তা উন্নত হয়।
Flask অ্যাপ্লিকেশনের কার্যকারিতা এবং ব্যবহারিক পরিবেশের ওপর ভিত্তি করে এটি তিনটি মোডে চালানো যায়: Debug Mode, Development Mode, এবং Production Mode। প্রতিটি মোডের নির্দিষ্ট বৈশিষ্ট্য এবং প্রয়োগ ক্ষেত্র রয়েছে।
১. Debug Mode
বৈশিষ্ট্য:
- ডিবাগ মোড চালু থাকলে Flask অ্যাপ্লিকেশনের ত্রুটি (errors) সম্পর্কে বিস্তারিত তথ্য প্রদর্শন করে।
- কোডে পরিবর্তন করা হলে সার্ভার স্বয়ংক্রিয়ভাবে পুনরায় লোড হয় (auto-reload)।
- শুধুমাত্র ডেভেলপমেন্টের সময় ব্যবহারের জন্য উপযুক্ত।
সক্রিয় করার পদ্ধতি:
if __name__ == "__main__":
app.run(debug=True)
প্রয়োজনীয়তা:
- কোড উন্নয়নের সময় ত্রুটি শনাক্ত করতে এবং দ্রুত ডিবাগ করতে।
সতর্কতা:
- ডিবাগ মোড প্রোডাকশন পরিবেশে ব্যবহার করবেন না, কারণ এটি সংবেদনশীল তথ্য প্রকাশ করতে পারে।
২. Development Mode
বৈশিষ্ট্য:
- Debug Mode এর অন্তর্ভুক্ত, যেখানে Flask অ্যাপের উন্নয়নের সময় ডিবাগিং সহজ হয়।
- ডেভেলপমেন্ট এনভায়রনমেন্টে ব্যবহারের জন্য উপযুক্ত।
সক্রিয় করার পদ্ধতি:
পরিবেশ ভেরিয়েবল ব্যবহার করে:
export FLASK_ENV=development # Mac/Linux
set FLASK_ENV=development # Windows
অথবা Python কোডে:
import os
os.environ['FLASK_ENV'] = 'development'
if __name__ == "__main__":
app.run()
সুবিধা:
- উন্নয়নের সময় ডিবাগ টুল এবং কোড রিলোডার সক্রিয় থাকে।
- ত্রুটি বার্তা বিস্তারিত দেখায়।
সীমাবদ্ধতা:
- প্রোডাকশন পরিবেশে নিরাপত্তার জন্য উপযুক্ত নয়।
৩. Production Mode
বৈশিষ্ট্য:
- Debug এবং Development Mode নিষ্ক্রিয় থাকে।
- নিরাপত্তা এবং কর্মক্ষমতা (performance) বাড়ানোর জন্য উপযুক্ত।
- Flask প্রোডাকশন পরিবেশে WSGI সার্ভার (যেমন Gunicorn বা uWSGI) এর মাধ্যমে চালানো হয়।
সক্রিয় করার পদ্ধতি:
পরিবেশ ভেরিয়েবল ব্যবহার করে:
export FLASK_ENV=production # Mac/Linux
set FLASK_ENV=production # Windows
অথবা Python কোডে:
import os
os.environ['FLASK_ENV'] = 'production'
if __name__ == "__main__":
app.run()
প্রয়োজনীয়তা:
- প্রোডাকশন পরিবেশে নিরাপত্তা এবং স্থিতিশীলতার জন্য।
সতর্কতা:
- সরাসরি Flask ডেভেলপমেন্ট সার্ভার ব্যবহার করবেন না।
- সর্বদা প্রোডাকশন পরিবেশে একটি WSGI সার্ভার (যেমন Gunicorn) ব্যবহার করুন।
মোডের মধ্যে পার্থক্য
| বৈশিষ্ট্য | Debug Mode | Development Mode | Production Mode |
|---|---|---|---|
| Debug Toolbar | সক্রিয় | সক্রিয় | নিষ্ক্রিয় |
| Auto-Reload | সক্রিয় | সক্রিয় | নিষ্ক্রিয় |
| Performance | ধীরগতির | মাঝারি | উচ্চ গতিসম্পন্ন |
| Security | নিম্নমানের | নিম্নমানের | উচ্চমানের |
| Use Case | ডিবাগিং | উন্নয়ন | প্রোডাকশন |
Flask মোড ব্যবস্থাপনা
কোডের মাধ্যমে মোড সেটআপ:
import os
from flask import Flask
app = Flask(__name__)
# পরিবেশ অনুযায়ী কনফিগারেশন লোড
if os.environ.get('FLASK_ENV') == 'development':
app.config['DEBUG'] = True
else:
app.config['DEBUG'] = False
if __name__ == "__main__":
app.run()
ডিফল্ট মোড:
- Flask ডিফল্টভাবে Production Mode-এ চলে।
Flask মোড ব্যবহারের সুপারিশ
- Debug Mode: কোডের ত্রুটি দ্রুত শনাক্ত করতে।
- Development Mode: কোড উন্নয়নের সময় ব্যবহার করুন।
- Production Mode: ব্যবহারকারীর কাছে অ্যাপ্লিকেশন প্রকাশ করার সময় সর্বদা প্রোডাকশন মোড ব্যবহার করুন।
Flask মোড সঠিকভাবে ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনের নিরাপত্তা, কর্মক্ষমতা, এবং উন্নয়নশীলতার মান বজায় রাখা সম্ভব।
Flask অ্যাপ্লিকেশনের জন্য পরিবেশ ভেরিয়েবল (Environment Variables) ব্যবহার করা একটি গুরুত্বপূর্ণ কাজ, যা প্রোডাকশন এবং ডেভেলপমেন্ট পরিবেশের মধ্যে কনফিগারেশন পরিবর্তন করার জন্য সহায়ক। পরিবেশ ভেরিয়েবলগুলি সাধারণত অ্যাপ্লিকেশনের সেটিংস, যেমন ডাটাবেস ইউআরএল, সিক্রেট কী, এবং অন্যান্য সিস্টেম কনফিগারেশন মান নির্ধারণ করতে ব্যবহৃত হয়। Flask-এ পরিবেশ ভেরিয়েবল ব্যবহারের মাধ্যমে কনফিগারেশন ভিন্ন পরিবেশে পরিচালনা করা সহজ হয়।
পরিবেশ ভেরিয়েবল কী?
পরিবেশ ভেরিয়েবল হলো সিস্টেমের ভেতরে স্টোর করা কিছু তথ্য যা অ্যাপ্লিকেশনের চালনার সময় অ্যাক্সেস করা যায়। এটি সাধারণত সার্ভার কনফিগারেশন, ডাটাবেস কনফিগারেশন, API কী ইত্যাদি জন্য ব্যবহার করা হয়।
Flask অ্যাপ্লিকেশনটি বিভিন্ন পরিবেশে চালানোর সময় বিভিন্ন কনফিগারেশন সেট করা হয়, যা পরিবেশ ভেরিয়েবল ব্যবহার করে পরিবর্তন করা যায়।
Flask-এ পরিবেশ ভেরিয়েবল সেট করার পদ্ধতি
১. পরিবেশ ভেরিয়েবল সেট করা (Mac/Linux)
আপনার টার্মিনালে পরিবেশ ভেরিয়েবল সেট করতে নিচের কমান্ড ব্যবহার করুন:
export FLASK_APP=app.py
export FLASK_ENV=development
export SECRET_KEY='আপনার-গোপন-কী'
FLASK_APP: Flask অ্যাপ্লিকেশনটির মূল ফাইল (যেমনapp.py) নির্ধারণ করে।FLASK_ENV: অ্যাপ্লিকেশনের পরিবেশ (যেমনdevelopmentবাproduction) নির্ধারণ করে।SECRET_KEY: Flask অ্যাপ্লিকেশনটির নিরাপত্তার জন্য গোপন কী।
২. পরিবেশ ভেরিয়েবল সেট করা (Windows)
Windows-এ পরিবেশ ভেরিয়েবল সেট করতে নিচের কমান্ড ব্যবহার করুন:
set FLASK_APP=app.py
set FLASK_ENV=development
set SECRET_KEY=আপনার-গোপন-কী
৩. Flask অ্যাপ্লিকেশন চালানো
পরিবেশ ভেরিয়েবল সেট করার পরে Flask অ্যাপ চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:
flask run
এটি অ্যাপ্লিকেশনটি চলমান অবস্থায় রাখবে এবং আপনার পরিবেশ অনুযায়ী কনফিগারেশন অ্যাক্সেস করতে সহায়ক হবে।
Flask অ্যাপ্লিকেশনে পরিবেশ ভেরিয়েবল ব্যবহার করা
Flask অ্যাপ্লিকেশনের মধ্যে পরিবেশ ভেরিয়েবল ব্যবহার করার জন্য os মডিউল ব্যবহার করতে হয়। এটি আপনাকে সিস্টেমের পরিবেশ ভেরিয়েবল অ্যাক্সেস করতে সহায়ক হবে।
উদাহরণ:
import os
from flask import Flask
app = Flask(__name__)
# পরিবেশ ভেরিয়েবল থেকে SECRET_KEY এবং FLASK_ENV অ্যাক্সেস করা
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'ডিফল্ট-কী') # ডিফল্ট মান দেওয়া যায়
app.config['ENV'] = os.getenv('FLASK_ENV', 'production') # পরিবেশ সেট করা
@app.route("/")
def home():
return f"Flask অ্যাপ্লিকেশন চলছে {app.config['ENV']} পরিবেশে।"
if __name__ == "__main__":
app.run()
এই কোডে:
os.getenv(): এটি পরিবেশ ভেরিয়েবল থেকে মান নিয়ে আসে। যদি ভেরিয়েবলটি না থাকে, তাহলে ডিফল্ট মান প্রদান করা হয়।
.env ফাইল ব্যবহার করে পরিবেশ ভেরিয়েবল সেট করা
Flask অ্যাপ্লিকেশনকে আরও সুবিধাজনক এবং নিরাপদ করতে .env ফাইল ব্যবহার করা যেতে পারে। এটি আপনার পরিবেশ ভেরিয়েবলগুলি ফাইলের মধ্যে সংরক্ষণ করে।
.envফাইল তৈরি করুন:আপনার Flask প্রজেক্টের মূল ডিরেক্টরিতে
.envনামে একটি ফাইল তৈরি করুন এবং সেখানে পরিবেশ ভেরিয়েবলগুলি রাখুন:FLASK_APP=app.py FLASK_ENV=development SECRET_KEY=আপনার-গোপন-কীpython-dotenvপ্যাকেজ ইনস্টল করুন:.envফাইল থেকে ভেরিয়েবল লোড করতেpython-dotenvপ্যাকেজ ইনস্টল করতে হবে:pip install python-dotenvFlask অ্যাপ্লিকেশনে
.envফাইল লোড করা:আপনার
app.pyফাইলে.envফাইলটি লোড করার জন্য নিচের কোড ব্যবহার করুন:from flask import Flask from dotenv import load_dotenv import os # .env ফাইল লোড করা load_dotenv() app = Flask(__name__) app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') app.config['ENV'] = os.getenv('FLASK_ENV', 'production') @app.route("/") def home(): return f"Flask অ্যাপ্লিকেশন চলছে {app.config['ENV']} পরিবেশে।" if __name__ == "__main__": app.run()
এখন .env ফাইল থেকে পরিবেশ ভেরিয়েবল লোড হয়ে Flask অ্যাপ্লিকেশন চালু হবে।
Flask অ্যাপ্লিকেশনের পরিবেশ ভেরিয়েবল ব্যবহারের সুবিধা
- নিরাপত্তা: পরিবেশ ভেরিয়েবল ব্যবহার করার মাধ্যমে সংবেদনশীল তথ্য যেমন সিক্রেট কী, ডাটাবেস ক্রেডেনশিয়ালগুলি কোড থেকে আলাদা থাকে, যা নিরাপত্তা বাড়ায়।
- পরিবেশ অনুযায়ী কনফিগারেশন পরিবর্তন: একই কোডবেসের মাধ্যমে বিভিন্ন পরিবেশে (ডেভেলপমেন্ট, প্রোডাকশন) কাজ করা সহজ হয়।
- টেস্টিং সুবিধা: টেস্টিং বা স্টেজিং পরিবেশের জন্য আলাদা কনফিগারেশন সেট করা যায়।
Flask অ্যাপ্লিকেশনে পরিবেশ ভেরিয়েবল ব্যবহার করা খুবই গুরুত্বপূর্ণ। এটি অ্যাপ্লিকেশনটির নিরাপত্তা, কনফিগারেশন ব্যবস্থাপনা এবং পরিবেশভিত্তিক ডিপ্লয়মেন্টের ক্ষেত্রে সহায়ক। .env ফাইল এবং python-dotenv প্যাকেজের মাধ্যমে আরও সহজ এবং নিরাপদভাবে পরিবেশ ভেরিয়েবল ব্যবস্থাপনা করা যায়।
Flask অ্যাপ্লিকেশনে Custom Configuration তৈরি করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের নির্দিষ্ট কনফিগারেশন ভেরিয়েবল সেট করতে পারেন, যা অ্যাপের সেটিংস, নিরাপত্তা, ডাটাবেস কনফিগারেশন, API কী, ইত্যাদি জন্য ব্যবহৃত হয়। কাস্টম কনফিগারেশন ব্যবহার করার মাধ্যমে আপনার অ্যাপ্লিকেশন আরো নমনীয় এবং পরিবেশ অনুযায়ী কনফিগার করা যায়।
Flask-এ কাস্টম কনফিগারেশন তৈরি করা
Flask অ্যাপ্লিকেশনে কাস্টম কনফিগারেশন তৈরি করার জন্য সাধারণত একটি config.py ফাইল ব্যবহার করা হয়, যেখানে আপনার কাস্টম কনফিগারেশন ভেরিয়েবলগুলো থাকবে। এর পরে এই কনফিগারেশন ফাইলটি অ্যাপ্লিকেশনে লোড করা হয়।
১. Custom Configuration তৈরি করা
ধাপ ১: config.py ফাইল তৈরি করা
প্রথমে, আপনার Flask প্রজেক্ট ডিরেক্টরিতে একটি config.py ফাইল তৈরি করুন, যেখানে আপনি কাস্টম কনফিগারেশন সেটিংস সংজ্ঞায়িত করবেন।
# config.py
class Config:
SECRET_KEY = 'আপনার-গোপন-কী'
SQLALCHEMY_DATABASE_URI = 'sqlite:///your_database.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
API_KEY = 'আপনার-API-কী'
MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16 MB পর্যন্ত ফাইল আপলোডের অনুমতি
DEBUG = False
class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///dev_database.db'
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/prod_db'
এখানে:
Configক্লাসে সাধারণ কনফিগারেশন সেটিংস রাখা হয়েছে।DevelopmentConfig: ডেভেলপমেন্ট পরিবেশের জন্য কনফিগারেশন, যেখানে ডিবাগ মোড চালু করা হয়েছে।ProductionConfig: প্রোডাকশন পরিবেশের জন্য কনফিগারেশন, যেখানে ডাটাবেস URI পরিবর্তন করা হয়েছে।
ধাপ ২: কনফিগারেশন ফাইল লোড করা
এখন, আপনার Flask অ্যাপ্লিকেশন ফাইলে config.py থেকে কনফিগারেশন লোড করতে হবে।
# app.py
from flask import Flask
from config import DevelopmentConfig # অথবা ProductionConfig
app = Flask(__name__)
# কাস্টম কনফিগারেশন লোড করা
app.config.from_object(DevelopmentConfig) # অথবা ProductionConfig
@app.route("/")
def home():
return f"Flask অ্যাপ্লিকেশন চলছে {app.config['DEBUG']} মোডে"
if __name__ == "__main__":
app.run()
এখানে:
app.config.from_object()ব্যবহার করা হয়েছে কনফিগারেশন ফাইল থেকে কনফিগারেশন লোড করার জন্য।
ধাপ ৩: অ্যাপ চালানো
আপনার অ্যাপ চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
python app.py
এটি আপনার Flask অ্যাপ্লিকেশন চালু করবে এবং কাস্টম কনফিগারেশন অনুযায়ী অ্যাপ্লিকেশন পরিচালিত হবে।
২. পরিবর্তনশীল কনফিগারেশন মান
আপনি চাইলে রানটাইমে কাস্টম কনফিগারেশন মান পরিবর্তন করতে পারেন।
app.config['SECRET_KEY'] = 'নতুন-গোপন-কী'
app.config['DEBUG'] = True
এটি ডেভেলপমেন্ট মোড চালু করার জন্য ব্যবহৃত হবে। Flask কনফিগারেশন সিস্টেমে কাস্টম ভেরিয়েবল পরিবর্তন করার এই পদ্ধতিটি খুবই শক্তিশালী এবং নমনীয়।
৩. পরিবেশভিত্তিক কনফিগারেশন
একই কোডবেসের মধ্যে বিভিন্ন পরিবেশে (যেমন ডেভেলপমেন্ট এবং প্রোডাকশন) কাজ করার জন্য আপনি পরিবেশভিত্তিক কনফিগারেশন তৈরি করতে পারেন।
উদাহরণ:
import os
if os.environ.get('FLASK_ENV') == 'development':
app.config.from_object('config.DevelopmentConfig')
else:
app.config.from_object('config.ProductionConfig')
এখানে:
os.environ.get('FLASK_ENV')ব্যবহার করা হয়েছে পরিবেশ পরিবর্তনের জন্য।- ডেভেলপমেন্ট পরিবেশে
DevelopmentConfigকনফিগারেশন, এবং প্রোডাকশনেProductionConfigকনফিগারেশন লোড করা হবে।
৪. পরিবেশ ভেরিয়েবল ব্যবহার করে কনফিগারেশন
Flask অ্যাপ্লিকেশনে পরিবেশ ভেরিয়েবল ব্যবহার করে কাস্টম কনফিগারেশন মান লোড করা যায়। এতে নিরাপত্তা এবং কনফিগারেশন ভিন্ন পরিবেশে পরিচালনা করা সহজ হয়।
import os
from flask import Flask
app = Flask(__name__)
# পরিবেশ ভেরিয়েবল থেকে কনফিগারেশন লোড করা
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'ডিফল্ট-কী')
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URI', 'sqlite:///default.db')
@app.route("/")
def home():
return f"Flask অ্যাপ্লিকেশন চলছে {app.config['SQLALCHEMY_DATABASE_URI']} ডাটাবেস URI এর সাথে।"
if __name__ == "__main__":
app.run()
এখানে:
os.getenv()ব্যবহার করা হয়েছে পরিবেশ ভেরিয়েবল থেকে কনফিগারেশন মান লোড করতে।SECRET_KEYএবংDATABASE_URIপরিবেশ ভেরিয়েবল থেকে সেট করা হয়েছে, অন্যথায় ডিফল্ট মান ব্যবহার করা হবে।
৫. কাস্টম কনফিগারেশন পরিবর্তন এবং রিফ্রেশ করা
কনফিগারেশন পরিবর্তন করা হলে Flask অ্যাপ্লিকেশন রিফ্রেশ করা যায়। উদাহরণস্বরূপ, কনফিগারেশন পরিবর্তন করার পর অ্যাপ্লিকেশনটি পুনরায় চালু না করেই পরিবর্তন দেখতে পারেন।
app.config['DEBUG'] = True # নতুন কনফিগারেশন
Flask-এ কাস্টম কনফিগারেশন তৈরি করা সহজ এবং কার্যকর। config.py ফাইল ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট কনফিগারেশন ভেরিয়েবল সেট করতে পারেন এবং প্রয়োজন অনুযায়ী কনফিগারেশন লোড করতে পারেন। এই কাস্টম কনফিগারেশন পদ্ধতিটি আপনার অ্যাপ্লিকেশনকে আরো নমনীয়, সুরক্ষিত এবং পরিবেশভিত্তিক পরিচালনা করতে সাহায্য করে।
Read more