خیلی وقتها ربات تلگرام ما به یک سرویس خارجی (مثلاً پرداخت، هوش مصنوعی، یا API داخلی شرکت) وابسته است. وقتی آن سرویس کند یا داون میشود، ربات هم کند میشود، Timeout میدهد و تجربه کاربر نابود میشود.
یکی از الگوهای معماری که اینجا واقعاً نجاتدهنده است، Circuit Breaker Pattern است.
ایدهٔ اصلی:
مثل فیوز برق عمل میکند؛ اگر درخواستهای پشتسرهم به سرویس خراب شوند، «مدار» را قطع میکند و موقتاً دیگر درخواست به آن سرویس نمیفرستد. بهجایش:
• سریع جواب fallback میدهد ⚙️
• از شلوغتر شدن سرویس خراب جلوگیری میکند 🚫
• ربات شما Responsive باقی میماند ✅
سه حالت اصلی:
• Closed: همهچیز اوکی است، درخواستها مستقیم میروند.
• Open: خطای زیاد؛ مدار قطع میشود، دیگر درخواست مستقیم نمیرود.
• Half-Open: هر چند ثانیه چند درخواست تستی میفرستد؛ اگر موفق شد، برمیگردد به Closed.
نمونه ساده در Python برای ربات تلگرام:
import time
import requests
class CircuitBreaker:
def __init__(self, failure_threshold=3, reset_timeout=10):
self.failure_threshold = failure_threshold
self.reset_timeout = reset_timeout
self.failures = 0
self.state = 'CLOSED'
self.last_failure_time = 0
def call(self, func, fallback, *args, **kwargs):
if self.state == 'OPEN':
if time.time() - self.last_failure_time > self.reset_timeout:
self.state = 'HALF_OPEN'
else:
return fallback()
try:
result = func(*args, **kwargs)
self.failures = 0
self.state = 'CLOSED'
return result
except Exception:
self.failures += 1
self.last_failure_time = time.time()
if self.failures >= self.failure_threshold:
self.state = 'OPEN'
return fallback()
cb = CircuitBreaker()
استفاده در هندلر پیام:
def call_ai_service(text):
return requests.post('https://api.example.com/ai', json={'q': text}).json()
def ai_fallback():
return {'answer': 'سرویس هوش مصنوعی موقتاً در دسترس نیست 😔'}
# داخل هندلر ربات
response = cb.call(call_ai_service, ai_fallback, message.text)
bot.send_message(chat_id, response['answer'])
نکات کاربردی برای رباتهای تلگرام:
• برای هر سرویس حساس (پرداخت، AI، CRM) یک Circuit Breaker جدا نگهدارید.
• لاگ بگیرید تا بدانید کی مدار Open شده است.
• همراه Circuit Breaker، از Retry با Backoff هم استفاده کنید.
بهکمک Circuit Breaker رباتتان حتی وقتی سرویسهای بیرونی مشکل دارند، همچنان پایدار و قابلاعتماد میماند 💪
🔖 #TelegramBot #ربات #تلگرام #Circuit_Breaker #Resilience #Telegram_Bot #Python #Architecture #Pattern
👤 Developix
💎 Channel: @DevelopixRobot