CherryPy একটি অত্যন্ত নমনীয় ফ্রেমওয়ার্ক এবং এর মধ্যে Plugins ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনে বিভিন্ন অতিরিক্ত ফিচার যুক্ত করতে পারেন। CherryPy এর প্লাগইন সিস্টেম সহজেই এক্সটেনশন এবং কাস্টম ফিচার যুক্ত করতে সক্ষম, যা আপনাকে আরও বেশি কাস্টমাইজেশন এবং কার্যকারিতা প্রদান করে।
এই টিউটোরিয়ালে CherryPy এর বিভিন্ন ধরনের প্লাগইন এবং তাদের ব্যবহার নিয়ে আলোচনা করা হবে।
CherryPy প্লাগইন সিস্টেম
CherryPy তে Pluggable tools ব্যবহৃত হয়, যা আপনার অ্যাপ্লিকেশনে নির্দিষ্ট কার্যকলাপ বা ফিচার যুক্ত করার জন্য ব্যবহৃত হয়। CherryPy তে প্লাগইনগুলোর মাধ্যমে বিভিন্ন কাজ যেমন Authentication, Session Management, Static File Handling, Logging, Compression ইত্যাদি করা যায়।
CherryPy এর জনপ্রিয় প্লাগইনগুলো
- Session Management
- Static File Handling
- JSON and XML tools
- Logging Tools
- Gzip Compression
- Authentication Tools
- Request Handling Tools
1. Session Management
CherryPy তে Session Management খুবই সহজ। এটি আপনাকে ব্যবহারকারীর সেশন ডেটা সংরক্ষণ এবং পরিচালনা করতে সাহায্য করে।
উদাহরণ: Session Plugin
import cherrypy
class SessionApp:
@cherrypy.expose
def index(self):
# Session সেট করা
cherrypy.session['username'] = 'admin'
return "Session set for username: admin"
@cherrypy.expose
def show_session(self):
# Session থেকে মান পাওয়া
username = cherrypy.session.get('username', 'Guest')
return f"Hello, {username}!"
if __name__ == '__main__':
cherrypy.config.update({
'tools.sessions.on': True, # সেশন চালু করা
'tools.sessions.timeout': 60 # সেশন টাইমআউট
})
cherrypy.quickstart(SessionApp())
ব্যাখ্যা:
tools.sessions.on: সেশন ম্যানেজমেন্ট চালু করা হয়।tools.sessions.timeout: সেশনের টাইমআউট নির্ধারণ করা হয়।
2. Static File Handling
CherryPy তে Static File Handling এর জন্য একটি প্লাগইন রয়েছে যা স্ট্যাটিক ফাইল (যেমন CSS, JavaScript, ইমেজ) সঠিকভাবে পরিচালনা করতে সাহায্য করে।
উদাহরণ: Static File Handling
import cherrypy
class StaticFileApp:
@cherrypy.expose
def index(self):
return "Static files handling example"
if __name__ == '__main__':
cherrypy.config.update({
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './static' # Static ফাইলের লোকেশন
}
})
cherrypy.quickstart(StaticFileApp())
ব্যাখ্যা:
tools.staticdir.on: স্ট্যাটিক ফাইল পরিবেশন চালু করা হয়।tools.staticdir.dir: স্ট্যাটিক ফাইলের ডিরেক্টরি নির্ধারণ করা হয়।
3. JSON এবং XML Tools
CherryPy তে JSON এবং XML রেসপন্স তৈরি করার জন্য প্লাগইন রয়েছে। এটি খুবই উপকারী যখন আপনি API ডেভেলপ করেন।
উদাহরণ: JSON Response
import cherrypy
import json
class JSONApp:
@cherrypy.expose
@cherrypy.tools.json_out() # JSON আউটপুট টুল
def index(self):
return {"message": "Welcome to CherryPy with JSON!"}
if __name__ == '__main__':
cherrypy.quickstart(JSONApp())
ব্যাখ্যা:
tools.json_out(): এই প্লাগইন JSON রেসপন্স তৈরি করতে ব্যবহৃত হয়।
4. Logging Tools
CherryPy তে লগিং ব্যবস্থাপনা চালানোর জন্য একটি প্লাগইন রয়েছে যা অ্যাক্সেস এবং ত্রুটি লগিংকে সহজ করে তোলে।
উদাহরণ: Logging Tool
import cherrypy
class LoggingApp:
@cherrypy.expose
def index(self):
return "Logging tools example"
if __name__ == '__main__':
cherrypy.config.update({
'log.access_file': './logs/access.log', # অ্যাক্সেস লগ ফাইল
'log.error_file': './logs/error.log' # ত্রুটি লগ ফাইল
})
cherrypy.quickstart(LoggingApp())
ব্যাখ্যা:
log.access_file: অ্যাক্সেস লগ ফাইলের লোকেশন।log.error_file: ত্রুটি লগ ফাইলের লোকেশন।
5. Gzip Compression
CherryPy তে Gzip Compression ব্যবহার করে আপনি ডেটা কম্প্রেশন করতে পারেন, যা ওয়েব পেজের লোড টাইম কমাতে সাহায্য করে।
উদাহরণ: Gzip Compression
import cherrypy
class GzipApp:
@cherrypy.expose
def index(self):
return "This response is compressed using Gzip!"
if __name__ == '__main__':
cherrypy.config.update({
'tools.gzip.on': True # Gzip কম্প্রেশন চালু করা
})
cherrypy.quickstart(GzipApp())
ব্যাখ্যা:
tools.gzip.on: Gzip কম্প্রেশন চালু করা হয়।
6. Authentication Tools
CherryPy তে কাস্টম অটেনটিকেশন সিস্টেম তৈরি করতে Authentication Tools ব্যবহার করা যায়। এটি ব্যবহারকারীর পরিচয় যাচাই করতে সাহায্য করে।
উদাহরণ: Simple Authentication Tool
import cherrypy
class AuthApp:
@cherrypy.expose
def index(self):
if not self.authenticate():
return "You must be logged in to view this page."
return "Welcome to the authenticated page!"
def authenticate(self):
# এখানে কাস্টম অটেনটিকেশন লজিক থাকবে
return True
if __name__ == '__main__':
cherrypy.quickstart(AuthApp())
ব্যাখ্যা:
authenticate()মেথডের মাধ্যমে কাস্টম অটেনটিকেশন যাচাই করা হয়।
7. Request Handling Tools
CherryPy তে Request Handling Tools ব্যবহার করে আপনি বিভিন্ন ধরণের কাস্টম রিকোয়েস্ট হ্যান্ডলিং করতে পারেন, যেমন রিকোয়েস্ট থেকে ডেটা প্যারামিটার সংগ্রহ করা বা রিকোয়েস্টে ফিল্টারিং করা।
উদাহরণ: Request Tool
import cherrypy
class RequestHandlingApp:
@cherrypy.expose
def index(self):
name = cherrypy.request.params.get('name', 'Guest')
return f"Hello, {name}!"
if __name__ == '__main__':
cherrypy.quickstart(RequestHandlingApp())
ব্যাখ্যা:
cherrypy.request.params.get(): রিকোয়েস্ট প্যারামিটার থেকে ডেটা সংগ্রহ করা হয়।
উপসংহার
CherryPy এর প্লাগইন সিস্টেম আপনার অ্যাপ্লিকেশনে বিভিন্ন কার্যকরী ফিচার যুক্ত করতে সাহায্য করে। এগুলি আপনাকে অ্যাপ্লিকেশনটিকে আরো নমনীয় এবং শক্তিশালী করতে সহায়তা করবে। CherryPy তে প্লাগইন ব্যবহার করে আপনি সেশন ম্যানেজমেন্ট, স্ট্যাটিক ফাইল সার্ভিং, JSON/XML রেসপন্স, লগিং, কম্প্রেশন, অটেনটিকেশন ইত্যাদি খুব সহজেই এক্সটেন্ড করতে পারেন।
Read more