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¶
将通知存储在内存中以进行测试验证。