CherryPy একটি ওয়েব ফ্রেমওয়ার্ক হিসেবে বিভিন্ন প্রক্রিয়া বা স্টেপ অনুসরণ করে যাতে ওয়েব রিকোয়েস্ট হ্যান্ডেল করতে পারে। এটি ডেভেলপারকে একটি পরিষ্কার জীবনচক্র (lifecycle) এবং রিকোয়েস্ট প্রসেসিং স্ট্রাকচার প্রদান করে, যা অ্যাপ্লিকেশন তৈরির সময় কার্যকরভাবে ব্যবহার করা যায়। এখানে CherryPy এর অ্যাপ্লিকেশন লাইফসাইকেল এবং রিকোয়েস্ট প্রসেসিং-এর বিস্তারিত আলোচনা করা হলো।
CherryPy অ্যাপ্লিকেশন লাইফসাইকেল (Application Lifecycle)
CherryPy অ্যাপ্লিকেশনের জীবনচক্রে কিছু গুরুত্বপূর্ণ পর্যায় থাকে, যেগুলো ওয়েব রিকোয়েস্ট গ্রহণ এবং প্রক্রিয়াজাত করার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে।
অ্যাপ্লিকেশন লাইফসাইকেলের মূল ধাপগুলো:
- Start: অ্যাপ্লিকেশন শুরু হওয়া, যেখানে CherryPy সিস্টেম কনফিগারেশন লোড করে এবং রিকোয়েস্ট হ্যান্ডলারের জন্য প্রস্তুত হয়।
- Request Handling: একটি রিকোয়েস্ট আসলে, CherryPy তার প্রয়োজনীয় রুট এবং কনফিগারেশন অনুসারে রিকোয়েস্ট হ্যান্ডেল করে।
- Response: রিকোয়েস্টের ভিত্তিতে উপযুক্ত রেসপন্স প্রদান করা হয়।
- Shutdown: অ্যাপ্লিকেশন বন্ধ হলে, CherryPy এক্সেস এবং সেশন ক্লোজ করে এবং যে কোনো পরিষেবা সম্পন্ন করে।
অ্যাপ্লিকেশন লাইফসাইকেল স্টেপসমূহ:
- Engine Start:
cherrypy.engine.start()কমান্ড দিয়ে CherryPy সার্ভার চালু করা হয়। - Request Processing: রিকোয়েস্ট আসলে CherryPy তার প্রাসঙ্গিক কনফিগারেশন অনুযায়ী রিকোয়েস্ট প্রসেস করতে শুরু করে।
- Response Generation: রিকোয়েস্টের জন্য উপযুক্ত রেসপন্স তৈরি হয় এবং ক্লায়েন্টে পাঠানো হয়।
- Engine Stop: অ্যাপ্লিকেশন বন্ধ হওয়ার সময়,
cherrypy.engine.stop()দিয়ে সার্ভার বন্ধ করা হয়।
CherryPy রিকোয়েস্ট প্রসেসিং (Request Processing)
CherryPy রিকোয়েস্ট প্রসেসিং একটি সিরিয়াল স্টেপ অনুসরণ করে, যেখানে এটি ইনকামিং রিকোয়েস্টের প্রতি সুনির্দিষ্টভাবে প্রতিক্রিয়া জানায়। প্রতিটি রিকোয়েস্ট হ্যান্ডলিং সঠিক রুটে পাঠানো হয় এবং সেখান থেকে প্রয়োজনীয় তথ্য বা রেসপন্স ফিরিয়ে আনা হয়।
রিকোয়েস্ট প্রসেসিং স্টেপগুলো:
- রিকোয়েস্ট গ্রহণ: CherryPy একটি HTTP রিকোয়েস্ট পায়, যেটি URL, HTTP মেথড (GET, POST), হেডার এবং প্যারামিটার সহ আসে।
- Routing: CherryPy রুটের মাধ্যমে রিকোয়েস্টটি পাস করে, যেমন
/indexবা/aboutপাথে। এটি অ্যাপ্লিকেশনের কন্ট্রোলার মেথডের সাথে মিলিয়ে রিকোয়েস্টটি হ্যান্ডেল করে। - Tools and Hooks: CherryPy বিভিন্ন টুলস এবং হুকস ব্যবহার করে রিকোয়েস্ট প্রসেসিংয়ের সময় অতিরিক্ত ফিচার যোগ করতে পারে, যেমন লগিং, সেশন ম্যানেজমেন্ট, প্রিফিক্স হ্যান্ডলিং ইত্যাদি।
- বিজনেস লজিক/Response Generation: রিকোয়েস্ট অনুযায়ী উপযুক্ত বিজনেস লজিক (যেমন, ডাটাবেস থেকে ডেটা রিট্রিভাল বা ফাইল রিটার্ন) প্রক্রিয়াজাত করা হয় এবং রেসপন্স তৈরি করা হয়।
- Response Return: তৈরি হওয়া রেসপন্সটি ক্লায়েন্টের কাছে পাঠানো হয়। এটি সাধারণত HTML, JSON, XML অথবা অন্য কোনো ফরম্যাটে হতে পারে।
- মিডলওয়ার (Middleware): রিকোয়েস্ট এবং রেসপন্সের উপর বিভিন্ন প্রকার প্রক্রিয়া, যেমন ডেটা প্রসেসিং, কুকিজ সেটিং, বা নিরাপত্তা যাচাই, মিডলওয়ারের মাধ্যমে বাস্তবায়িত হতে পারে।
CherryPy Request Handler
একটি CherryPy অ্যাপ্লিকেশন তৈরির সময়, রিকোয়েস্ট হ্যান্ডলারগুলো ব্যবহার করে রিকোয়েস্ট প্রসেস করা হয়। উদাহরণস্বরূপ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def about(self):
return "এটি অ্যাবাউট পেজ।"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে:
@cherrypy.exposeডেকোরেটরটি রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এটি প্রতিটি মেথডকে একটি URL পাথের সঙ্গে যুক্ত করে।
CherryPy Request Life Cycle
CherryPy রিকোয়েস্ট লাইফ সাইকেলকে বোঝার জন্য, একটি সাধারণ প্রক্রিয়া দেখানো হলো:
- Request: ক্লায়েন্ট একটি HTTP রিকোয়েস্ট পাঠায়।
- Routing: CherryPy রুট মেচিংয়ের মাধ্যমে মেথড নির্বাচন করে।
- Hooks and Tools: রিকোয়েস্ট প্রসেসিংয়ের সময় হুকস এবং টুলস প্রয়োগ করা হয়, যেমন সেশন ম্যানেজমেন্ট বা প্রিফিক্স ম্যানিপুলেশন।
- Business Logic: কন্ট্রোলার মেথডে বিজনেস লজিক প্রক্রিয়াজাত হয়, যেমন ডাটাবেসে প্রশ্ন পাঠানো।
- Response: প্রক্রিয়া শেষে রেসপন্স তৈরি হয় এবং ক্লায়েন্টকে পাঠানো হয়।
CherryPy Request Hooks
চেরিপাই হুকস (Hooks) আপনাকে রিকোয়েস্টের বিভিন্ন ধাপে অতিরিক্ত কার্যক্রম যোগ করার সুযোগ দেয়। কিছু জনপ্রিয় হুকস:
- before_request: রিকোয়েস্ট গ্রহণের আগে কিছু কার্যক্রম করতে।
- after_request: রিকোয়েস্ট শেষ হওয়ার পরে কিছু কার্যক্রম করতে।
উদাহরণ:
import cherrypy
def before_request():
print("রিকোয়েস্ট আসছে...")
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
if __name__ == '__main__':
cherrypy.tools.before_request = cherrypy.Tool('before_request', before_request)
cherrypy.quickstart(MyApp())
CherryPy এর অ্যাপ্লিকেশন লাইফসাইকেল এবং রিকোয়েস্ট প্রসেসিং সিস্টেমটি ডেভেলপারদের একটি পরিষ্কার এবং মডুলার ওয়েব অ্যাপ্লিকেশন তৈরি করার সুযোগ দেয়। এটি রিকোয়েস্ট গ্রহণ থেকে রেসপন্স প্রদান পর্যন্ত সব কিছু সুশৃঙ্খলভাবে প্রক্রিয়া করে, এবং প্রয়োজনীয় কাস্টমাইজেশন এবং অপটিমাইজেশন এর মাধ্যমে আপনাকে আরও কার্যকরী অ্যাপ্লিকেশন নির্মাণে সহায়তা করে।
Read more