CherryPy তে Exception Management এবং Debugging Techniques ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় ঘটতে পারে এমন ত্রুটি বা সমস্যাগুলোর সঠিকভাবে চিহ্নিত করা এবং সমাধান করা যায়। CherryPy তে ত্রুটি পরিচালনা করার জন্য কিছু বিল্ট-ইন মেকানিজম এবং ডিবাগিং টেকনিক রয়েছে, যা ডেভেলপারদের কার্যকরভাবে অ্যাপ্লিকেশন উন্নত এবং রক্ষণাবেক্ষণ করতে সাহায্য করে।
CherryPy তে Exception Management
CherryPy তে Exception Management হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনে উত্থাপিত ত্রুটির জন্য সঠিক রেসপন্স এবং লগিং ব্যবস্থা তৈরি করা হয়। CherryPy স্বয়ংক্রিয়ভাবে কিছু সাধারণ ত্রুটি হ্যান্ডেল করে, তবে আপনি চাইলে কাস্টম ত্রুটি হ্যান্ডলারের মাধ্যমে ত্রুটি পরিচালনা করতে পারেন।
CherryPy তে ত্রুটি হ্যান্ডলিংয়ের জন্য কাস্টম হ্যান্ডলার
CherryPy তে ত্রুটি হ্যান্ডলিং করার জন্য আপনি on_error হুক বা কাস্টম Exception Handler ব্যবহার করতে পারেন। এর মাধ্যমে আপনি কোনো নির্দিষ্ট ত্রুটি, যেমন 404 (পেজ না পাওয়া) বা 500 (সার্ভার ত্রুটি), এর জন্য কাস্টম রেসপন্স তৈরি করতে পারেন।
উদাহরণ: কাস্টম Exception Handler
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def error(self):
# একটি কৃত্রিম ত্রুটি উত্থাপন করা
raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")
# কাস্টম ত্রুটি হ্যান্ডলার
def handle_error(self, exception):
return f"ত্রুটি: {str(exception)}"
if __name__ == '__main__':
cherrypy.tree.mount(MyApp())
cherrypy.config.update({'error_page.default': MyApp().handle_error}) # কাস্টম ত্রুটি পেজ
cherrypy.quickstart()
কোড ব্যাখ্যা:
error()মেথড: একটি কৃত্রিম ত্রুটি উত্থাপন করছেValueErrorব্যবহার করে।handle_error()মেথড: কাস্টম ত্রুটি হ্যান্ডলার, যা যেকোনো ধরনের ত্রুটি গ্রহণ করে এবং একটি কাস্টম রেসপন্স প্রদান করে।error_page.defaultকনফিগারেশন: CherryPy তে এই কনফিগারেশন ব্যবহার করে কাস্টম ত্রুটি পেজ নির্ধারণ করা হয়েছে।
এই উদাহরণে, যখন আপনি /error URL এ যাবেন, একটি কৃত্রিম ত্রুটি দেখানো হবে এবং কাস্টম ত্রুটি রেসপন্স প্রদর্শিত হবে।
CherryPy তে Exception Handling for HTTP Errors
CherryPy তে সাধারণ HTTP ত্রুটি যেমন 404, 500 ইত্যাদি হ্যান্ডল করার জন্য আপনি কাস্টম ত্রুটি পেজ তৈরি করতে পারেন।
উদাহরণ: 404 ত্রুটি হ্যান্ডলিং
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def not_found(self):
raise cherrypy.HTTPError(404, "এই পৃষ্ঠাটি পাওয়া যায়নি")
if __name__ == '__main__':
cherrypy.tree.mount(MyApp())
cherrypy.config.update({
'tools.error_page.on': True,
'error_page.404': '404.html' # 404 এর জন্য কাস্টম পেজ
})
cherrypy.quickstart()
এখানে:
cherrypy.HTTPError(404)ব্যবহার করা হয়েছে 404 ত্রুটি ঘটানোর জন্য।tools.error_page.onকনফিগারেশন ব্যবহার করে কাস্টম 404 পেজ সেট করা হয়েছে।
CherryPy তে Debugging Techniques
CherryPy তে অ্যাপ্লিকেশন ডেভেলপ করার সময় ডিবাগিং অনেক গুরুত্বপূর্ণ। ত্রুটি সনাক্তকরণের জন্য CherryPy কিছু ডিবাগিং টেকনিক এবং টুলস সরবরাহ করে, যা ডেভেলপারদের কোডের সমস্যা চিহ্নিত করতে সাহায্য করে।
CherryPy তে Debugging চালু করা
CherryPy তে ডিবাগিং সক্রিয় করতে cherrypy.config.update() এর মাধ্যমে কিছু কনফিগারেশন সেট করা যায়। tools.log_error এবং tools.access_log ব্যবহার করে আপনি লগ ফাইল তৈরি করতে পারেন যা ত্রুটি এবং রিকোয়েস্ট সংক্রান্ত তথ্য ধারণ করবে।
উদাহরণ: Debugging চালু করা
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
if __name__ == '__main__':
cherrypy.config.update({
'tools.log_error.on': True, # ত্রুটি লগ চালু করা
'tools.access_log.on': True, # অ্যাক্সেস লগ চালু করা
'log.access_file': './logs/access.log', # অ্যাক্সেস লগ ফাইল
'log.error_file': './logs/error.log' # ত্রুটি লগ ফাইল
})
cherrypy.quickstart(MyApp())
এখানে:
tools.log_error.on: ত্রুটি লগিং চালু করা হয়েছে, যাতে সমস্ত ত্রুটি লগ ফাইলে সংরক্ষণ হয়।tools.access_log.on: অ্যাক্সেস লগিং চালু করা হয়েছে, যাতে সার্ভারের প্রতি রিকোয়েস্টের তথ্য লগে সংরক্ষণ হয়।
CherryPy তে স্ট্যাক ট্রেস দেখতে
CherryPy তে ডিবাগিংয়ের সময় আপনি স্ট্যাক ট্রেস দেখতে পারেন, যা আপনাকে ত্রুটির উৎস চিহ্নিত করতে সহায়তা করে। ডিফল্টভাবে, CherryPy স্ট্যাক ট্রেস রেসপন্সের মধ্যে দেখায়, তবে আপনি এটি কনফিগারেশন ফাইলের মাধ্যমে কাস্টমাইজ করতে পারেন।
উদাহরণ: স্ট্যাক ট্রেস চালু করা
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def error(self):
raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")
if __name__ == '__main__':
cherrypy.config.update({'environment': 'production'}) # স্ট্যাক ট্রেস ডিফল্টভাবে বন্ধ থাকে
cherrypy.quickstart(MyApp())
এটি প্রোডাকশন পরিবেশে চালানো হলে স্ট্যাক ট্রেস দেখাবে না। আপনি চাইলে environment সেটিং পরিবর্তন করে ডিবাগিং চালু করতে পারেন।
CherryPy তে Exception Logging
CherryPy তে ত্রুটি লগিং করার জন্য logging মডিউল ব্যবহার করা যেতে পারে। এটি সার্ভারের ত্রুটি এবং অন্যান্য গুরুত্বপূর্ণ লগ ফাইল তৈরি করতে সাহায্য করে।
উদাহরণ: Exception Logging
import cherrypy
import logging
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def error(self):
try:
raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")
except Exception as e:
logging.error(f"ত্রুটি: {str(e)}")
return "ত্রুটি ঘটেছে!"
if __name__ == '__main__':
logging.basicConfig(filename='app.log', level=logging.ERROR)
cherrypy.quickstart(MyApp())
এখানে:
logging.basicConfig()ব্যবহার করে একটি লগ ফাইলapp.logতৈরি করা হয়েছে, যেখানে ত্রুটি লগ করা হবে।
CherryPy তে Exception Management এবং Debugging Techniques অত্যন্ত গুরুত্বপূর্ণ, যা ডেভেলপারদের অ্যাপ্লিকেশনের ত্রুটি চিহ্নিত করতে এবং সমাধান করতে সহায়তা করে। CherryPy তে কাস্টম ত্রুটি হ্যান্ডলিং, লগিং এবং ডিবাগিং টেকনিকগুলির মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরও কার্যকরী এবং নির্ভরযোগ্য করতে পারেন।
Read more