CherryPy দিয়ে একটি ভালোভাবে সংগঠিত প্রজেক্ট তৈরি করতে একটি মানসম্মত প্রজেক্ট স্ট্রাকচার এবং কনফিগারেশন সেটআপ থাকা জরুরি। এটি কোড পরিচালনা, মডিউলারিটি এবং স্কেলেবিলিটির জন্য গুরুত্বপূর্ণ।
Project Structure
CherryPy অ্যাপ্লিকেশনের জন্য একটি সাধারণ প্রজেক্ট স্ট্রাকচার নিম্নরূপ হতে পারে:
my_cherrypy_app/
│
├── app/
│ ├── __init__.py
│ ├── controllers.py
│ ├── models.py
│ └── views/
│ ├── base.html
│ └── index.html
│
├── config/
│ └── app.conf
│
├── static/
│ ├── css/
│ │ └── styles.css
│ ├── js/
│ │ └── script.js
│ └── images/
│ └── logo.png
│
├── run.py
└── README.md
ডিরেক্টরি এবং ফাইল ব্যাখ্যা
app/: অ্যাপ্লিকেশনের মূল অংশ যেখানে মডেল, কন্ট্রোলার এবং ভিউ ফাইল থাকে।controllers.py: ওয়েব রিকোয়েস্ট হ্যান্ডেল করে।models.py: ডাটাবেজ লজিক।views/: HTML টেমপ্লেট ফাইল।
config/: অ্যাপ্লিকেশনের কনফিগারেশন ফাইল সংরক্ষণের জন্য।app.conf: CherryPy কনফিগারেশন সংক্রান্ত সেটিংস।
static/: স্ট্যাটিক ফাইল, যেমন CSS, জাভাস্ক্রিপ্ট, এবং ইমেজ।run.py: সার্ভার চালানোর জন্য স্ক্রিপ্ট।README.md: প্রজেক্টের বিবরণ।
Basic Configuration
CherryPy কনফিগারেশন সেটিংস সাধারণত .conf ফাইল বা Python ডিকশনারি ব্যবহার করে সংরক্ষণ করা হয়।
উদাহরণ: app.conf ফাইল
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
log.access_file = "logs/access.log"
log.error_file = "logs/error.log"
engine.autoreload.on = True
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
Python ডিকশনারি দিয়ে কনফিগারেশন
import cherrypy
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'log.access_file': 'logs/access.log',
'log.error_file': 'logs/error.log',
'engine.autoreload.on': True,
})
Controller উদাহরণ
controllers.py:
import cherrypy
class MainController:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def about(self):
return "এটি একটি ডেমো অ্যাপ্লিকেশন।"
Static Files সাপোর্ট
app.conf ফাইলে স্ট্যাটিক ফাইল যুক্ত করার জন্য:
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
এতে /static URL এ স্ট্যাটিক ফাইল অ্যাক্সেসযোগ্য হবে।
Run Script উদাহরণ
run.py:
import cherrypy
from app.controllers import MainController
if __name__ == "__main__":
cherrypy.quickstart(MainController(), "/", "config/app.conf")
Project পরিচালনা এবং বর্ধনশীলতা
- মডুলার ডিজাইন: প্রজেক্ট স্ট্রাকচারটি এমনভাবে তৈরি করুন, যা সহজে বর্ধন করা যায়।
- কনফিগারেশন ম্যানেজমেন্ট:
.confফাইল ব্যবহার করুন, যা পরিবেশ ভেদে (ডেভেলপমেন্ট, প্রোডাকশন) সহজে পরিবর্তন করা যায়। - লগিং ব্যবস্থাপনা: অ্যাক্সেস এবং ত্রুটি লগ সংরক্ষণ করার ব্যবস্থা রাখুন।
ভালো প্রজেক্ট স্ট্রাকচার এবং সঠিক কনফিগারেশন CherryPy অ্যাপ্লিকেশনকে আরও কার্যকর এবং সহজে পরিচালনাযোগ্য করে তোলে।