Notifier

class oslo_messaging.Notifier(transport, publisher_id=None, driver=None, serializer=None, retry=None, topics=None)

发送通知消息。

Notifier 类用于通过消息传递传输或其他方式发送通知消息。

通知消息遵循以下格式

{'message_id': str(uuid.uuid4()),
 'publisher_id': 'compute.host1',
 'timestamp': timeutils.utcnow(),
 'priority': 'WARN',
 'event_type': 'compute.create_instance',
 'payload': {'instance_id': 12, ... }}

Notifier 对象可以使用传输对象和发布者 ID 进行实例化

notifier = messaging.Notifier(get_notification_transport(CONF),
                              'compute')

并且通过使用驱动程序配置选项选择的驱动程序以及在 [oslo_messaging_notifications] 部分中选择的 topics 配置选项发送通知。

或者,Notifier 对象可以使用特定的驱动程序或主题进行实例化

transport = notifier.get_notification_transport(CONF)
notifier = notifier.Notifier(transport,
                             'compute.host',
                             driver='messaging',
                             topics=['notifications'])

Notifier 对象实例化起来相对昂贵(主要是加载通知驱动程序的成本),因此可以使用 prepare() 方法使用不同的发布者 ID 来专门化给定的 Notifier 对象

notifier = notifier.prepare(publisher_id='compute')
notifier.info(ctxt, event_type, payload)
audit(ctxt, event_type, payload)

以审计级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

critical(ctxt, event_type, payload)

以关键级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

debug(ctxt, event_type, payload)

以调试级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

error(ctxt, event_type, payload)

以错误级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

info(ctxt, event_type, payload)

以信息级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

is_enabled()

检查 notifier 是否会在任何地方发出通知。

返回值:

如果 notifier 的驱动程序仅设置为 noop,则为 false,否则为 true

prepare(publisher_id=<object object>, retry=<object object>)

返回一个专门的 Notifier 实例。

返回一个具有所提供 publisher_id 的新的 Notifier 实例。允许在无需加载通知驱动程序的开销的情况下,从多个 publisher_id 发送通知。

参数:
  • publisher_id (str) – 通知中字段,例如 ‘compute.host1’

  • retry (int) – 连接重试配置(由消息传递驱动程序使用):None 或 -1 表示永远重试。0 表示不尝试重试。N 表示最多尝试 N 次重试。

sample(ctxt, event_type, payload)

以采样级别发送通知。

采样通知用于高频率事件,通常包含小的负载。例如:“CPU = 70%”

并非所有驱动程序都支持采样级别(例如 log),因此这些可能会被丢弃。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

warn(ctxt, event_type, payload)

以警告级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

warning(ctxt, event_type, payload)

以警告级别发送通知。

参数:
  • ctxt (dict) – 请求上下文字典

  • event_type (str) – 描述事件,例如 ‘compute.create_instance’

  • payload (dict) – 通知负载

引发:

MessageDeliveryFailure

class oslo_messaging.LoggingNotificationHandler(url, publisher_id=None, driver=None, topic=None, serializer=None)

用于记录到消息通知系统的处理程序。

每次应用程序使用 logging 模块记录消息时,它都会作为通知发送。通知中使用的严重程度与用于日志记录的严重程度相同。

这可以用于 Python 记录配置,如下所示

[handler_notifier]
class=oslo_messaging.LoggingNotificationHandler
level=ERROR
args=('rabbit:///')
CONF = <oslo_config.cfg.ConfigOpts object>

默认配置对象,如果要使用另一个对象,请继承此类。

emit(record)

将日志记录发送到消息通知系统。

参数:

record – 要发出的日志记录。

class oslo_messaging.LoggingErrorNotificationHandler(*args, **kwargs)
emit(record)

执行记录指定日志记录所需的一切操作。

此版本旨在由子类实现,因此会引发 NotImplementedError。

可用的 Notifier 驱动程序

log

通过 Python 记录基础设施发布通知。

messaging

使用 1.0 消息格式发送通知。

此驱动程序通过配置的消息传递传输发送通知,但不包含任何消息信封(也称为消息格式 1.0)。

仅当存在不支持 2.0 消息格式的已部署消费者时,才应使用此驱动程序。

messagingv2

使用 2.0 消息格式发送通知。

noop

通知的基础驱动程序

routing

通知的基础驱动程序

test

将通知存储在内存中以进行测试验证。