Mounting Applications এবং Routes কনফিগারেশন

CherryPy এর Application Structure - চেরিপাই (CherryPy) - Web Development

254

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 এর এই ফিচারটি বড় এবং জটিল অ্যাপ্লিকেশনে খুবই কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...