CherryPy একটি কাস্টমাইজেবল ফ্রেমওয়ার্ক, যা সহজেই বেসিক এবং অ্যাডভান্সড কনফিগারেশন সমর্থন করে। এর কনফিগারেশন সিস্টেম অত্যন্ত নমনীয় এবং Python ডিকশনারি বা .conf ফাইল ব্যবহার করে সেট করা যায়।
কনফিগারেশন সংক্রান্ত মূল বিষয়সমূহ
- গ্লোবাল কনফিগারেশন (Global Configuration): সার্ভারের জন্য সাধারণ সেটিংস।
- রুট কনফিগারেশন (Route Configuration): নির্দিষ্ট রুটের জন্য কাস্টম সেটিংস।
- টুলস কনফিগারেশন (Tools Configuration): স্ট্যাটিক ফাইল পরিবেশন বা কুকিজ ব্যবস্থাপনা।
গ্লোবাল কনফিগারেশন
গ্লোবাল কনফিগারেশন cherrypy.config.update() ব্যবহার করে সেট করা যায়। এটি সাধারণত সার্ভারের হোস্ট, পোর্ট এবং লগ সংক্রান্ত সেটিংস নির্ধারণ করে।
উদাহরণ:
import cherrypy
class HelloWorld:
@cherrypy.expose
def index(self):
return "CherryPy এর বেসিক কনফিগারেশন।"
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '127.0.0.1', # সার্ভারের হোস্ট
'server.socket_port': 8080, # সার্ভারের পোর্ট
'log.access_file': './access.log', # অ্যাক্সেস লগ ফাইল
'log.error_file': './error.log', # ত্রুটি লগ ফাইল
'engine.autoreload.on': True # স্বয়ংক্রিয় রিলোড চালু
})
cherrypy.quickstart(HelloWorld())
.conf ফাইল ব্যবহার করে কনফিগারেশন
CherryPy কনফিগারেশন ফাইল ব্যবহার করেও সেটিংস সংরক্ষণ করা যায়।
উদাহরণ .conf ফাইল (app.conf):
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 9090
log.access_file = "./logs/access.log"
log.error_file = "./logs/error.log"
engine.autoreload.on = True
Python কোডে .conf ফাইল লোড করা:
import cherrypy
class HelloWorld:
@cherrypy.expose
def index(self):
return "CherryPy এর .conf ফাইল কনফিগারেশন।"
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld(), config="app.conf")
রুট বা পাথ ভিত্তিক কনফিগারেশন
CherryPy আপনাকে নির্দিষ্ট পাথের জন্য কাস্টম কনফিগারেশন সেট করতে দেয়।
উদাহরণ:
import cherrypy
class StaticFileServer:
@cherrypy.expose
def index(self):
return "CherryPy রুট কনফিগারেশন উদাহরণ।"
config = {
'/static': {
'tools.staticdir.on': True, # স্ট্যাটিক ফাইল পরিবেশন চালু
'tools.staticdir.dir': './static' # স্ট্যাটিক ফাইলের লোকেশন
}
}
if __name__ == '__main__':
cherrypy.quickstart(StaticFileServer(), config=config)
ফাইল কাঠামো:
project/
│
├── app.py
├── static/
│ ├── styles.css
│ └── script.js
ব্রাউজারে পরীক্ষা:
http://127.0.0.1:8080/static/styles.css
টুলস কনফিগারেশন (Tools Configuration)
CherryPy বিভিন্ন বিল্ট-ইন টুল যেমন স্ট্যাটিক ফাইল পরিবেশন, কুকিজ ব্যবস্থাপনা এবং কম্প্রেশন সাপোর্ট করে।
উদাহরণ: Gzip কম্প্রেশন চালু
import cherrypy
class GzipExample:
@cherrypy.expose
def index(self):
return "CherryPy দিয়ে Gzip কম্প্রেশন চালু।"
if __name__ == '__main__':
cherrypy.config.update({
'tools.gzip.on': True # Gzip কম্প্রেশন চালু
})
cherrypy.quickstart(GzipExample())
ডিফল্ট কনফিগারেশন ফাইল তৈরি
CherryPy একটি ডিফল্ট কনফিগারেশন জেনারেট করতে পারে:
python -m cherrypy.tutorial.conf
এটি একটি .conf ফাইল তৈরি করবে, যেখানে CherryPy এর বিভিন্ন কনফিগারেশন অপশন দেখানো থাকবে।
CherryPy এর বেসিক কনফিগারেশন ব্যবহার করে সহজেই একটি কাস্টমাইজড এবং কার্যকর সার্ভার সেটআপ করা যায়। এর গ্লোবাল, রুট এবং টুলস কনফিগারেশন আপনাকে অ্যাপ্লিকেশন তৈরি ও পরিচালনা করার জন্য প্রয়োজনীয় নমনীয়তা প্রদান করে।
CherryPy অ্যাপ্লিকেশনের কনফিগারেশন ফাইল ব্যবহার করে অ্যাপ্লিকেশনের সেটিংস সহজেই নির্ধারণ ও পরিচালনা করা যায়। এই কনফিগারেশন ফাইল সাধারণত .ini বা .conf ফরম্যাটে থাকে। ফাইলভিত্তিক কনফিগারেশন ব্যবহারের সুবিধা হলো এটি কোড থেকে আলাদা থাকে, ফলে অ্যাপ্লিকেশন পরিচালনা এবং পরিবেশ (development, testing, production) অনুযায়ী পরিবর্তন সহজ হয়।
Configuration File কি?
CherryPy এর কনফিগারেশন ফাইল একটি সাধারণ পাঠ্য ফাইল (plain text file), যা নির্দিষ্ট সেটিংস সংরক্ষণ করে।
কনফিগারেশন ফাইলের প্রধান বৈশিষ্ট্য:
[global]সেকশন: সার্ভার সংক্রান্ত গ্লোবাল সেটিংস নির্ধারণ করে।- রুট-নির্দিষ্ট সেকশন: নির্দিষ্ট পাথ বা URL এর জন্য কাস্টম সেটিংস।
Configuration File এর উদাহরণ
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"
tools.staticdir.content_types = {'css': 'text/css', 'js': 'application/javascript'}
Configuration File ব্যবহার করা
CherryPy অ্যাপ্লিকেশন চালানোর সময় কনফিগারেশন ফাইল লোড করার জন্য কোডে config প্যারামিটার ব্যবহার করতে হয়।
উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"
if __name__ == "__main__":
cherrypy.quickstart(MyApp(), config="app.conf")
Configuration File এর গুরুত্বপূর্ণ সেকশন
১. Global Section
[global] সেকশন পুরো সার্ভার সেটআপ নিয়ন্ত্রণ করে।
সেটিংস উদাহরণ:
[global]
server.socket_host = "127.0.0.1" # হোস্ট ঠিকানা
server.socket_port = 9090 # সার্ভারের পোর্ট নম্বর
log.access_file = "./access.log" # অ্যাক্সেস লগ ফাইল
log.error_file = "./error.log" # ত্রুটি লগ ফাইল
engine.autoreload.on = True # স্বয়ংক্রিয় রিলোড চালু
২. Route-Specific Section
নির্দিষ্ট রুটের জন্য সেটিংস নির্ধারণ করতে পাথ অনুযায়ী সেকশন তৈরি করতে হয়।
সেটিংস উদাহরণ:
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
tools.staticdir.content_types = {'css': 'text/css', 'js': 'application/javascript'}
Configuration File জেনারেট করা
CherryPy ডিফল্ট কনফিগারেশন ফাইল তৈরি করতে পারে:
python -m cherrypy.tutorial.conf
এটি একটি .conf ফাইল তৈরি করবে, যেখানে CherryPy এর বিভিন্ন অপশন দেখানো থাকবে।
উদাহরণ: Static File পরিবেশন
app.conf ফাইল:
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
Python কোড:
import cherrypy
class StaticServer:
@cherrypy.expose
def index(self):
return "CherryPy স্ট্যাটিক ফাইল পরিবেশন উদাহরণ।"
if __name__ == '__main__':
cherrypy.quickstart(StaticServer(), config="app.conf")
ফাইল কাঠামো:
project/
│
├── app.py
├── app.conf
├── static/
│ ├── styles.css
│ └── script.js
সুবিধাসমূহ
- কোড থেকে আলাদা সেটিংস: সেটিংস এবং কোড পৃথক থাকায় পরিচালনা সহজ হয়।
- পরিবেশ অনুযায়ী কনফিগারেশন পরিবর্তন: ডেভেলপমেন্ট, টেস্টিং বা প্রোডাকশন পরিবেশ অনুযায়ী কনফিগারেশন সহজে আপডেট করা যায়।
- পুনর্ব্যবহারযোগ্যতা: একাধিক প্রজেক্টে একই ফাইল ব্যবহার করা যায়।
CherryPy এর কনফিগারেশন ফাইল ব্যবহার করে অ্যাপ্লিকেশনের সেটিংস নির্ধারণ করা সহজ এবং কার্যকর। .conf বা .ini ফাইল আপনাকে সার্ভারের প্যারামিটার, লগ ফাইল, এবং স্ট্যাটিক ফাইল পরিচালনা করার নমনীয়তা প্রদান করে। এটি অ্যাপ্লিকেশন ব্যবস্থাপনা আরও সহজ এবং পেশাদার করে তোলে।
CherryPy এর কনফিগারেশন সিস্টেম আপনাকে ওয়েব অ্যাপ্লিকেশনের রুট (root) এবং বিভিন্ন URI পাথের জন্য কাস্টম সেটিংস কনফিগার করতে সহায়তা করে। এটি আপনাকে বিভিন্ন URL রুটের জন্য আলাদা আচরণ নির্ধারণের সুবিধা দেয়। CherryPy এ URI (Uniform Resource Identifier) এবং Root কনফিগারেশন ব্যবহারের মাধ্যমে আপনি ওয়েব সার্ভিসের বিভিন্ন অংশকে কাস্টমাইজ করতে পারেন।
URI এবং Root কনফিগারেশন
CherryPy এ রুট কনফিগারেশন হলো এমন একটি সিস্টেম, যা বিভিন্ন URL পাথের জন্য বিভিন্ন কনফিগারেশন সেটিংস অ্যাপ্লাই করতে সাহায্য করে। রুট কনফিগারেশন মূলত [root] অথবা [uri] সেকশনে রাখা হয়। একটি সাধারণ CherryPy অ্যাপ্লিকেশনে রুট কনফিগারেশন একটি ক্লাসের মাধ্যমে সংজ্ঞায়িত করা হয়, যা বিভিন্ন URI পাথের জন্য বিভিন্ন হ্যান্ডলার নির্ধারণ করে।
Root URI Configuration
CherryPy এ রুট (root) URI বা রুট পাথ হলো সেই পাথ যা সার্ভারের বেস URL হিসেবে কাজ করে। উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশন http://localhost:8080/ এ চলতে থাকে, তবে / হলো রুট পাথ।
রুট কনফিগারেশন উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "এটি হল রুট পেজ (Root Page)"
@cherrypy.expose
def about(self):
return "এটি হল অ্যাবাউট পেজ (About Page)"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে index মেথডটি রুট পাথ / এর জন্য এবং about মেথডটি /about পাথের জন্য কাজ করবে।
URI কনফিগারেশন (Route Specific Configuration)
CherryPy তে আপনি নির্দিষ্ট URI পাথের জন্য আলাদা কনফিগারেশন অ্যাপ্লাই করতে পারেন। এটি আপনাকে পাথভিত্তিক আলাদা কাস্টম সেটিংস প্রদান করতে সহায়তা করে, যেমন: লগিং, স্ট্যাটিক ফাইল সার্ভিং, সিকিউরিটি টুলস, এবং আরও অনেক কিছু।
URI কনফিগারেশন উদাহরণ:
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, # সেশন সমর্থন চালু
'tools.staticdir.on': True,
'tools.staticdir.dir': '/path/to/static', # স্ট্যাটিক ফাইল সার্ভিং
},
'/contact': {
'tools.gzip.on': True, # Gzip কম্প্রেশন চালু
}
}
if __name__ == '__main__':
cherrypy.quickstart(MyApp(), '/', config)
এখানে, /about এবং /contact রুটের জন্য আলাদা কনফিগারেশন ব্যবহার করা হয়েছে:
/aboutপাথে সেশন এবং স্ট্যাটিক ফাইল সার্ভিংয়ের কনফিগারেশন।/contactপাথে Gzip কম্প্রেশন চালু করা।
Root পাথের জন্য কনফিগারেশন ফাইল
CherryPy কনফিগারেশন ফাইলের মাধ্যমে রুট এবং URI কনফিগারেশন সেট করা যেতে পারে। এটি সাধারণত .conf বা .ini ফরম্যাটে থাকে।
উদাহরণ: 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
[/about]
tools.sessions.on = True
tools.staticdir.on = True
tools.staticdir.dir = "./static"
[/contact]
tools.gzip.on = True
এই কনফিগারেশন ফাইলটি CherryPy অ্যাপ্লিকেশনের জন্য /about এবং /contact পাথের আলাদা কনফিগারেশন নির্ধারণ করে।
Root Configuration with CherryPy
CherryPy তে আপনি রুট কনফিগারেশন বিভিন্নভাবে কাস্টমাইজ করতে পারেন, যেমন:
- Tools Configuration: CherryPy তে বিভিন্ন টুলস (জেভাস্ক্রিপ্ট কম্প্রেশন, সেশন, স্ট্যাটিক ফাইল সার্ভিং) আলাদা আলাদা URI বা রুটের জন্য কনফিগার করা যায়।
- Logging: আপনি রুটের জন্য আলাদা লগিং কনফিগারেশন নির্ধারণ করতে পারেন, যেমন বিভিন্ন রুটের জন্য আলাদা লগ ফাইল সংরক্ষণ।
- Security: CherryPy তে URI ভিত্তিক সিকিউরিটি কনফিগারেশন (HTTPs, Authentication) চালু করা যায়।
CherryPy তে URI এবং Root কনফিগারেশন ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন পাথ এবং রুটের জন্য কাস্টম সেটিংস ও আচরণ নির্ধারণ করতে পারেন। এটি আপনাকে উন্নত ফিচার এবং সুনির্দিষ্ট কনফিগারেশন সেটআপ করতে সহায়তা করে। CherryPy এর শক্তিশালী কনফিগারেশন সিস্টেম আপনাকে আরও দক্ষভাবে ওয়েব অ্যাপ্লিকেশন পরিচালনা করতে সাহায্য করবে।
CherryPy এ Error Logging এবং Debugging ব্যবস্থাপনা গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং পরিচালনায় সমস্যা সনাক্ত করতে সহায়তা করে। CherryPy কনফিগারেশন ফাইল এবং Python কোডের মাধ্যমে Error Logging এবং Debugging কার্যক্রম সেট করা যায়।
Error Logging Configuration
CherryPy তে Error Logging ব্যবস্থাপনা আপনাকে সার্ভারের ত্রুটি (error) এবং অ্যাক্সেস লগ (access log) ধারণ করতে সহায়তা করে। এটি ডেভেলপারদের অ্যাপ্লিকেশন উন্নত করতে এবং উৎপাদন পরিবেশে সমস্যা দ্রুত সনাক্ত করতে সাহায্য করে।
Error Logging কনফিগারেশন উদাহরণ
CherryPy তে error.log ফাইল কনফিগার করার জন্য log.error_file অপশন ব্যবহার করা হয়।
উদাহরণ: Error Logging কনফিগারেশন
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'log.error_file': './logs/error.log', # Error Log ফাইল
'log.access_file': './logs/access.log', # Access Log ফাইল
'log.screen': True # স্ক্রীনে লগ দেখানো
})
cherrypy.quickstart(MyApp())
ব্যাখ্যা:
log.error_file: এর মাধ্যমে ত্রুটি লগ ফাইল নির্ধারণ করা হয়।log.access_file: অ্যাক্সেস লগ ফাইলের অবস্থান নির্ধারণ করা হয়।log.screen: সার্ভারের ত্রুটি এবং অ্যাক্সেস লগ স্ক্রীনে দেখানোর জন্যTrueসেট করা হয়।
এই কনফিগারেশন আপনাকে লগ ফাইল তৈরি করতে এবং স্ক্রীনে লগ দেখতে সহায়তা করবে।
Error Handling (Custom Error Pages)
CherryPy তে কাস্টম Error Pages তৈরি করা যায়। উদাহরণস্বরূপ, 404 (Page Not Found) বা 500 (Internal Server Error) ত্রুটির জন্য কাস্টম পৃষ্ঠা তৈরি করা যায়।
কাস্টম Error Page উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"
@cherrypy.expose
def error(self):
raise cherrypy.HTTPError(404, "Page Not Found!")
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'log.error_file': './logs/error.log',
})
# কাস্টম Error Handling
cherrypy.tree.mount(MyApp(), '/')
# 404 ত্রুটি জন্য কাস্টম পেজ
cherrypy.tools.staticdir.on = True
cherrypy.quickstart(MyApp(), '/', config={
'/': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './static'
},
'/error': {
'request.error_page': 'error.html'
}
})
এখানে, 404 ত্রুটির জন্য একটি কাস্টম HTML পৃষ্ঠা error.html পরিবেশন করা হবে।
Debugging Configuration
CherryPy তে Debugging এর মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় সমস্যা দ্রুত শনাক্ত করা যায়। CherryPy এর ডিফল্ট ডিবাগিং মোড True থাকলে এটি ত্রুটি বার্তা এবং স্ট্যাক ট্রেস স্ক্রীনে প্রদর্শন করে।
Debugging Configuration উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'tools.dump.on': True, # Debugging চালু করা
'log.screen': True # স্ক্রীনে লগ দেখানো
})
cherrypy.quickstart(MyApp())
ব্যাখ্যা:
tools.dump.on: এটি ডিবাগging চালু করে, যাতে রিকোয়েস্ট, রেসপন্স এবং অন্যান্য তথ্য স্ক্রীনে প্রদর্শিত হয়।log.screen: স্ক্রীনে লগ দেখানোর জন্যTrueসেট করা হয়।
এটি ডেভেলপমেন্ট পর্যায়ে খুবই কার্যকর, কারণ এটি রিকোয়েস্ট এবং রেসপন্স ডেটা দেখিয়ে ডিবাগিং সহজ করে তোলে।
CherryPy তে Error এবং Debugging এর উন্নত কনফিগারেশন
CherryPy তে আরও উন্নত Error Handling এবং Debugging কনফিগারেশন তৈরি করা যায়। যেমন:
- Custom Error Handling: কাস্টম HTTP ত্রুটি কোড এবং পেজ তৈরি করতে পারেন।
- Log Rotation: লগ ফাইলের আকার সীমিত করতে এবং নতুন লগ ফাইল তৈরি করতে log.rotate ব্যবহার করা যায়।
- Error Alerts: ত্রুটির কারণে ইমেইল বা অন্য কোনো নোটিফিকেশন পাঠানোর ব্যবস্থা করা যেতে পারে।
CherryPy তে Error Logging এবং Debugging কনফিগারেশন আপনাকে অ্যাপ্লিকেশনের ত্রুটি সনাক্ত করতে এবং ডেভেলপমেন্টের সময় দ্রুত সমস্যা সমাধান করতে সাহায্য করে। CherryPy এর শক্তিশালী লগিং এবং ডিবাগিং ফিচার গুলি অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য অত্যন্ত কার্যকরী।
CherryPy দিয়ে ওয়েব অ্যাপ্লিকেশন তৈরি করার সময় স্ট্যাটিক ফাইল এবং মিডিয়া ফাইল পরিবেশন করা খুবই গুরুত্বপূর্ণ। CherryPy এ আপনি সহজেই স্ট্যাটিক ফাইল যেমন CSS, JavaScript, ইমেজ, এবং মিডিয়া ফাইল (ভিডিও, অডিও, ইত্যাদি) সার্ভ করতে পারেন। CherryPy এর tools.staticdir টুলটি স্ট্যাটিক ফাইল পরিবেশন করার জন্য ব্যবহৃত হয়।
Static Files পরিবেশন করা
CherryPy এ স্ট্যাটিক ফাইল পরিবেশন করার জন্য tools.staticdir টুলটি ব্যবহার করা হয়। এই টুলটি স্ট্যাটিক ফাইলের জন্য একটি নির্দিষ্ট ডিরেক্টরি সিলেক্ট করে, যেখানে আপনার CSS, JS, ইমেজ ফাইলগুলো সংরক্ষিত থাকবে।
উদাহরণ:
ধরা যাক, আপনার প্রকল্পের স্ট্যাটিক ফাইলগুলো static/ নামক ফোল্ডারে সংরক্ষিত রয়েছে।
project/
│
├── app.py
├── static/
│ ├── styles.css
│ ├── script.js
│ └── logo.png
app.py ফাইলটি হবে:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "এটি হল স্ট্যাটিক ফাইল পরিবেশন উদাহরণ!"
# স্ট্যাটিক ফাইল পরিবেশন করার কনফিগারেশন
config = {
'/static': {
'tools.staticdir.on': True, # স্ট্যাটিক ফাইল পরিবেশন চালু
'tools.staticdir.dir': './static', # স্ট্যাটিক ফাইলের লোকেশন
}
}
if __name__ == '__main__':
cherrypy.quickstart(MyApp(), '/', config)
এখানে /static URL পাথটি স্ট্যাটিক ফাইল পরিবেশনের জন্য ব্যবহৃত হচ্ছে। আপনি http://127.0.0.1:8080/static/styles.css দিয়ে CSS ফাইলটি অ্যাক্সেস করতে পারবেন।
Static Files এর জন্য কনফিগারেশন
স্ট্যাটিক ফাইল পরিবেশন করার জন্য আপনি .conf কনফিগারেশন ফাইল ব্যবহার করতে পারেন। এটি সাধারণত CherryPy অ্যাপ্লিকেশনের আলাদা কনফিগারেশন ফাইলে রাখা হয়।
উদাহরণ: app.conf ফাইল
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
এখন আপনার app.py কোডে এই কনফিগারেশন লোড করতে হবে:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "এটি হল স্ট্যাটিক ফাইল পরিবেশন উদাহরণ!"
if __name__ == '__main__':
cherrypy.quickstart(MyApp(), '/', config="app.conf")
Media Files পরিবেশন করা
মিডিয়া ফাইল পরিবেশন করা প্রায় একইভাবে করা যায়, যেমন ভিডিও, অডিও বা বড় আকারের ফাইল। CherryPy আপনাকে মিডিয়া ফাইলের জন্য নির্দিষ্ট ডিরেক্টরি সেট করার সুযোগ দেয়।
উদাহরণ:
ধরা যাক, আপনি মিডিয়া ফাইলগুলো media/ ফোল্ডারে সংরক্ষণ করেছেন।
project/
│
├── app.py
├── media/
│ ├── video.mp4
│ └── audio.mp3
app.py ফাইল:
import cherrypy
class MediaApp:
@cherrypy.expose
def index(self):
return "এটি হল মিডিয়া ফাইল পরিবেশন উদাহরণ!"
# মিডিয়া ফাইল পরিবেশন করার কনফিগারেশন
config = {
'/media': {
'tools.staticdir.on': True, # স্ট্যাটিক ফাইল পরিবেশন চালু
'tools.staticdir.dir': './media', # মিডিয়া ফাইলের লোকেশন
}
}
if __name__ == '__main__':
cherrypy.quickstart(MediaApp(), '/', config)
এখন আপনি http://127.0.0.1:8080/media/video.mp4 এ গিয়ে ভিডিও ফাইলটি অ্যাক্সেস করতে পারবেন।
স্ট্যাটিক ফাইলের কাস্টম কনফিগারেশন
CherryPy স্ট্যাটিক ফাইল পরিবেশন করার সময় বেশ কিছু কাস্টম কনফিগারেশন প্রদান করতে পারে যেমন:
- কনটেন্ট টাইপ (Content Type): স্ট্যাটিক ফাইলের জন্য কনটেন্ট টাইপ নির্ধারণ।
- ক্যাশিং (Caching): স্ট্যাটিক ফাইলের ক্যাশিং কন্ট্রোল।
কনফিগারেশন উদাহরণ:
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "./static"
tools.staticdir.content_types = {'css': 'text/css', 'js': 'application/javascript'}
tools.staticdir.cache_timeout = 3600 # ক্যাশিং টাইম আউট ১ ঘণ্টা
এই কনফিগারেশনটি CSS এবং JS ফাইলের জন্য কনটেন্ট টাইপ নির্ধারণ করে এবং ফাইলগুলোকে ১ ঘণ্টা পর্যন্ত ক্যাশে রাখতে নির্দেশ দেয়।
বড় আকারের মিডিয়া ফাইল পরিবেশন
CherryPy বড় আকারের মিডিয়া ফাইল যেমন ভিডিও বা অডিও সার্ভ করতে সক্ষম। তবে বড় ফাইল সার্ভিংয়ের জন্য কিছু বিষয় মনে রাখতে হয়:
tools.staticfile.onটুলটি ব্যবহার করে বড় মিডিয়া ফাইল ক্লায়েন্টকে স্ট্রিম করা যায়।- ফাইলের আকার যদি খুব বড় হয় তবে সার্ভার হতে পারে স্লো। এ জন্য মিডিয়া ফাইলের জন্য Range Requests এবং Chunked Responses ব্যবহার করা হতে পারে।
উদাহরণ:
import cherrypy
class MediaApp:
@cherrypy.expose
def stream_video(self, video_name):
video_path = f"./media/{video_name}"
return cherrypy.lib.static.serve_file(video_path, "video/mp4")
if __name__ == '__main__':
cherrypy.quickstart(MediaApp())
এখানে stream_video মেথডটি একটি ভিডিও ফাইল স্ট্রিমিং করতে সক্ষম।
CherryPy স্ট্যাটিক এবং মিডিয়া ফাইল পরিবেশন করার জন্য একটি শক্তিশালী টুলস সরবরাহ করে। tools.staticdir টুলটি ব্যবহার করে আপনি স্ট্যাটিক ফাইল এবং মিডিয়া ফাইল সহজেই পরিবেশন করতে পারবেন। এটি আপনাকে আপনার ওয়েব অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় ফাইল সঠিকভাবে পরিবেশন করতে সহায়তা করে, পাশাপাশি কাস্টম কনফিগারেশন এবং ক্যাশিং অপশনও প্রদান করে।
Read more