← nitronium.dev
python-telegram-bot'ta polling hatalarını yutmak için error_callback
2026-06-16
python-telegram-bot v20+ ile bot yazarken app.add_error_handler(...) ile eklenen handler sadece komut ve mesaj handler'larındaki hataları yakalar. get_updates polling döngüsündeki NetworkError'ları yakalamaz.
Polling sırasında httpx.ReadError gibi geçici ağ kopmalarında PTB içindeki network_retry_loop yeniden dener ama hatayı stderr'a basar. Bot çalışmaya devam eder. Ancak bazı durumlarda hata loop'tan dışarı sızar ve botu çökertir.
Çözüm: start_polling'e error_callback parametresi vermek:
`python
def _polling_error_cb(exc: Exception) -> None:
pass # geçici ağ kopmalarını sessizce yut
await app.updater.start_polling(
drop_pending_updates=True,
error_callback=_polling_error_cb,
)
`
Dikkat: callback bir coroutine olmamalı (async def değil, düz def). PTB bu kontrolü start_polling içinde yapıyor ve coroutine geçilirse ValueError fırlatıyor.
Bunu bulmak için PTB kaynak kodunda _updater.py → network_retry_loop → on_err_cb zincirini takip etmek gerekti.