mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-06-21 19:10:45 -04:00
33 lines
993 B
Python
33 lines
993 B
Python
__package__ = "archivebox.api"
|
|
|
|
from typing import Any
|
|
from collections.abc import Callable
|
|
import logging
|
|
|
|
from django.db import transaction
|
|
from signal_webhooks.handlers import sync_task_handler
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def warning_error_handler(hook: Any, error: Exception | None) -> None:
|
|
if error is not None:
|
|
logger.warning("Outbound webhook %r failed: %s", hook.name, error)
|
|
return
|
|
|
|
logger.warning("Outbound webhook %r returned a non-success response.", hook.name)
|
|
|
|
|
|
def transaction_on_commit_task_handler(hook: Callable[..., None], **kwargs: Any) -> None:
|
|
def run_webhook() -> None:
|
|
try:
|
|
sync_task_handler(hook, **kwargs)
|
|
except Exception:
|
|
logger.warning("Outbound webhook failed after transaction commit.", exc_info=True)
|
|
|
|
try:
|
|
transaction.on_commit(run_webhook)
|
|
except Exception:
|
|
logger.warning("Could not schedule outbound webhook after transaction commit.", exc_info=True)
|