Source code for noggin.utility.messaging
import sys
import traceback
import backoff
from fedora_messaging import api
from fedora_messaging import exceptions as fml_exceptions
from flask import current_app
[docs]
def backoff_hdlr(details):
current_app.logger.warning(
f"Publishing message failed. Retrying. {traceback.format_tb(sys.exc_info()[2])}"
)
@backoff.on_exception(
backoff.expo,
(fml_exceptions.ConnectionException, fml_exceptions.PublishException),
max_tries=3,
on_backoff=backoff_hdlr,
)
def _publish(message):
api.publish(message)
[docs]
def publish(message):
if not current_app.config["FEDORA_MESSAGING_ENABLED"]:
current_app.logger.info(
f"Fedora Messaging is disabled, not publishing the message on {message.topic}"
)
return
try:
_publish(message)
except fml_exceptions.BaseException:
current_app.logger.error(
f"Publishing message failed. Giving up. {traceback.format_tb(sys.exc_info()[2])}"
)
return