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