Вопрос проверяет понимание способов получения событий от внешних систем и различий между push и pull моделями.
Webhook — это механизм, при котором внешний сервис сам отправляет HTTP-запрос при наступлении события. Polling — это периодические запросы клиента к серверу для проверки изменений. Webhook снижает нагрузку и задержки, потому что не требует постоянных запросов. Polling проще реализовать, но менее эффективен.
Webhook и polling решают одну задачу — получение событий от внешней системы, но делают это по-разному.
При polling клиент регулярно спрашивает сервер:
Отправляет запрос
Проверяет, появились ли данные
Ждёт
Повторяет
Пример логики:
while True:
check_updates()
sleep(5)
Недостатки:
лишние запросы
нагрузка на сервер
задержка между событием и получением
Webhook работает по модели push.
Процесс:
Клиент регистрирует URL
При событии сервер отправляет POST-запрос
Клиент получает данные сразу
Пример:
@app.post("/webhook")
def webhook(data: dict):
print(data)
Polling:
проще настроить
работает везде
больше нагрузка
Webhook:
быстрее реагирует
меньше запросов
требует доступного публичного URL
Типичные примеры:
Telegram-боты
Stripe
GitHub
Webhook — более эффективный способ получения событий в реальном времени, тогда как polling используется, когда webhook невозможно настроить.