CherryPy তে Mounting Applications এবং Routes Configuration দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা আপনাকে একাধিক অ্যাপ্লিকেশন এবং রুটের জন্য আলাদা কনফিগারেশন সেটআপ করতে সাহায্য করে। এতে একাধিক ওয়েব অ্যাপ্লিকেশন এবং পাথকে বিভিন্ন কনফিগারেশন সহ পরিচালনা করা সহজ হয়।
Mounting Applications
Mounting হল একটি প্রক্রিয়া যেখানে আপনি একটি সাব-অ্যাপ্লিকেশনকে প্রধান অ্যাপ্লিকেশনের অধীনে এক বা একাধিক URI পাথে সংযুক্ত করেন। এটি আপনাকে একাধিক অ্যাপ্লিকেশন তৈরি করে তাদের আলাদা আলাদা পাথের সাথে যুক্ত করতে সাহায্য করে।
উদাহরণ: Mounting একটি সাব অ্যাপ
ধরা যাক, আপনার একটি প্রধান অ্যাপ্লিকেশন আছে এবং একটি সাব অ্যাপ্লিকেশন যা আপনি /subapp পাথে মাউন্ট করতে চান। এখানে CherryPy এর mount ফাংশন ব্যবহার করে সেট করা হয়।
import cherrypy
class MainApp:
@cherrypy.expose
def index(self):
return "এটি প্রধান অ্যাপ্লিকেশন (Main Application)"
class SubApp:
@cherrypy.expose
def index(self):
return "এটি সাব অ্যাপ্লিকেশন (Sub Application)"
if __name__ == '__main__':
cherrypy.tree.mount(MainApp(), '/') # মূল অ্যাপ মাউন্ট
cherrypy.tree.mount(SubApp(), '/subapp') # সাব অ্যাপ মাউন্ট
cherrypy.engine.start() # সার্ভার চালু করা
cherrypy.engine.block() # সার্ভার ব্লক করা
এখানে:
/পাথটি প্রধান অ্যাপ্লিকেশনের জন্য।/subappপাথটি সাব অ্যাপ্লিকেশনের জন্য।
Routes কনফিগারেশন
CherryPy তে আপনি routes configuration ব্যবহার করে URL পাথ অনুযায়ী কনফিগারেশন নির্ধারণ করতে পারেন। এটি আপনাকে আলাদা আলাদা রুটের জন্য আলাদা কনফিগারেশন সেট করতে সক্ষম করে। সাধারণত, আপনি একাধিক পাথের জন্য বিভিন্ন কনফিগারেশন (যেমন, স্ট্যাটিক ফাইল সার্ভিং, সেশন ব্যবস্থাপনা) প্রয়োগ করতে পারেন।
উদাহরণ: Routes কনফিগারেশন
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "এটি হল রুট পেজ (Root Page)"
@cherrypy.expose
def about(self):
return "এটি হল অ্যাবাউট পেজ (About Page)"
@cherrypy.expose
def contact(self):
return "এটি হল কন্ট্যাক্ট পেজ (Contact Page)"
# কনফিগারেশন
config = {
'/about': {
'tools.sessions.on': True, # সেশন সমর্থন চালু
},
'/contact': {
'tools.gzip.on': True, # Gzip কম্প্রেশন চালু
},
}
if __name__ == '__main__':
cherrypy.quickstart(MyApp(), '/', config)
এখানে:
/aboutপাথের জন্য সেশন সমর্থন চালু করা হয়েছে।/contactপাথের জন্য Gzip কম্প্রেশন চালু করা হয়েছে।
Mounting Applications এবং Routes কনফিগারেশন একসাথে ব্যবহার
আপনি একাধিক সাব অ্যাপ্লিকেশন মাউন্ট করতে এবং তাদের জন্য আলাদা কনফিগারেশন প্রয়োগ করতে পারেন। এখানে আমরা /subapp পাথের জন্য একটি সাব অ্যাপ্লিকেশন এবং তার জন্য আলাদা কনফিগারেশন প্রয়োগ করবো।
উদাহরণ: Mounting এবং Routes কনফিগারেশন একসাথে
import cherrypy
class MainApp:
@cherrypy.expose
def index(self):
return "এটি প্রধান অ্যাপ্লিকেশন (Main Application)"
class SubApp:
@cherrypy.expose
def index(self):
return "এটি সাব অ্যাপ্লিকেশন (Sub Application)"
@cherrypy.expose
def help(self):
return "এটি সাব অ্যাপ্লিকেশন হেল্প পেজ (Help Page)"
# কনফিগারেশন
config = {
'/': {
'tools.sessions.on': True, # প্রধান অ্যাপের জন্য সেশন চালু
},
'/subapp': {
'tools.staticdir.on': True, # সাব অ্যাপের জন্য স্ট্যাটিক ফাইল সার্ভিং
'tools.staticdir.dir': './static',
},
}
if __name__ == '__main__':
cherrypy.tree.mount(MainApp(), '/', config) # প্রধান অ্যাপ মাউন্ট
cherrypy.tree.mount(SubApp(), '/subapp', config) # সাব অ্যাপ মাউন্ট
cherrypy.engine.start() # সার্ভার চালু করা
cherrypy.engine.block() # সার্ভার ব্লক করা
এখানে:
/পাথটি প্রধান অ্যাপের জন্য, যেখানে সেশন চালু করা হয়েছে।/subappপাথটি সাব অ্যাপের জন্য, যেখানে স্ট্যাটিক ফাইল সার্ভিং কনফিগার করা হয়েছে।
CherryPy তে Mounting Applications এবং Routes Configuration আপনাকে একাধিক সাব অ্যাপ্লিকেশন পরিচালনা এবং আলাদা আলাদা পাথের জন্য কাস্টম কনফিগারেশন প্রয়োগ করার ক্ষমতা প্রদান করে। এতে আপনার অ্যাপ্লিকেশনটি আরও মডুলার এবং স্কেলেবল হয়ে ওঠে। CherryPy এর এই ফিচারটি বড় এবং জটিল অ্যাপ্লিকেশনে খুবই কার্যকর।
Read more