Source code for tahrir.notifications
import logging
import sys
import traceback
import backoff
from fedora_messaging import api as fm_api
from fedora_messaging import exceptions as fm_exceptions
from flask import current_app
log = logging.getLogger(__name__)
def _backoff_hdlr(details):
log.warning(f"Publishing message failed. Retrying. {traceback.format_tb(sys.exc_info()[2])}")
@backoff.on_exception(
backoff.expo,
(fm_exceptions.ConnectionException, fm_exceptions.PublishException),
max_tries=3,
on_backoff=_backoff_hdlr,
)
def _publish(message):
fm_api.publish(message)
[docs]
def callback(message):
if not current_app.config["TAHRIR_USE_FEDMSG"]:
return
log.debug(f"Publishing fedoramessage `{message}`")
try:
_publish(message)
except fm_exceptions.BaseException:
log.error(f"Publishing message failed. Giving up. {traceback.format_tb(sys.exc_info()[2])}")